歸併排序(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...