歸併排序 python實現

2021-10-08 15:44:40 字數 1007 閱讀 1404

歸併排序(merge sort)是建立在歸併操作上的一種有效,穩定的排序演算法,是先使每個子串行有序,

再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。

通俗來講,就是先將序列,拆分為若干有序的子串行,再將若干有序的子串行合併為有序序列,原理

如下圖所示:

**實現示例:

# 遞迴排序

defmergesort

(arr)

: lenth =

len(arr)

if lenth <2:

return arr

midle =

int(lenth/2)

left = mergesort(arr[

: midle]

) right = mergesort(arr[midle:])

return merge(left=left, right=right)

# 兩有序序列合併排序

defmerge

(left, right)

: r_arr =

while

len(left)

>

0and

len(right)

>0:

if left[0]

< right[0]

:0))

else:0

))r_arr.extend(left)

r_arr.extend(right)

return r_arr

if __name__ ==

'__main__'

: arr =[34

,4,8

,9] arr2 = mergesort(arr)

print

(arr2)

**的執行結果

python實現歸併排序

歸併排序,先把陣列按中間分為2個單元,直至每個單元僅包含1個元素,然後依次合併2個單元至一臨時陣列 def merge str,start index,end index,mid,temp j start index k mid 1 i 0while j mid and k end index if...

Python實現歸併排序

def mergesort seq if len seq 1 return seq else mid int len seq 2 lpart mergesort seq mid rpart mergesort seq mid return merge lpart,rpart defmerge lpa...

Python實現歸併排序

歸併排序是典型的分治法的應用 思想 先遞迴分解陣列,再合併陣列 原理 將陣列分解最小之後,然後合併兩個有序陣列,基本思想是比較兩個陣列的最前面的數,誰小就取誰,取完後,將相應的指標後移以為。然後再比較,直到乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。python 實現 歸併排序 def m...