Python歸併排序及常見排序演算法的比較

2021-10-05 05:36:14 字數 1188 閱讀 3432

一、歸併排序

歸併排序是採用分治法的乙個非常典型的應用。歸併排序的思想就是先遞迴分解陣列,再合併陣列。

將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。

二、python**實現

def

merge_sort

(alist)

:"""歸併排序"""

n =len(alist)

if n <=1:

#拆到只有乙個元素的時候就結束

return alist

#二分解

mid = n//

2#中間位置的下標

#left,right代表拆開後的新的有序列表

left_li = merge_sort(alist[

:mid]

) right_li = merge_sort(alist[mid:])

#將兩個有序的子串行合併成乙個新的整體

#merge(left, right)

left_pointer, right_pointer =0,

0 result =

while left_pointer <

len(left_li)

and right_pointer <

len(right_li)

:if left_li[left_pointer]

< right_li[right_li]:)

left_pointer +=

1else:)

right_pointer +=

1 result += left_li[left_pointer ]

result += right_li[right_pointer ]

return result

時間複雜度

最優時間複雜度:o(nlogn)

最壞時間複雜度:o(nlogn)

穩定性:穩定

常見排序演算法效率比較

python歸併排序 python 歸併排序

排序思路 1.將陣列分成兩組a,b,建立臨時陣列 c,c長度 a b 2.i,j分別屬於a,b 3.若a i b j 將b j 放入c,j 否則 a i 放入c,i 4.迴圈3步驟,將a或b中剩餘的元素放入c,再將c複製到陣列中 5.遞迴3 4直到a,b序列的長度 1 歸併排序 class merg...

排序 歸併排序 Python

歸併排序就是利用分治思想,合 分 合,把兩個有序的子陣列合併為乙個有序陣列,合併的策略就是比較兩個子陣列中還未參與排序部分的頭元素,把較小的元素加進來。歸併排序是穩定的排序。對序列 7,6,4,3,1,2,8,5 按公升序排列。合 分 7,6,4,3,1,2,8,5 7,6,4,3 1,2,8,5 ...

python歸併排序

coding utf 8 def mergesort seq 遞迴 if len seq 1 return seq mid int len seq 2 left mergesort seq mid right mergesort seq mid return merge left,right def...