歸併排序
歸併排序是採用分治法的乙個非常典型的應用,歸併排序的思想就是先遞迴分解陣列,再合併陣列
將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先娶誰,取了之後相應相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。
def
merge_sort
(alist)
:"""歸併排序"""
n =len(alist)
if n <=1:
return alist
mid = n //
2 left = merge_sort(alist[
:mid]
) right = merge_sort(alist[mid:])
left_pointer , right_pointer =0,
0 result =
while left_pointer <
len(left)
and right_pointer <
len(right)
:if left[left_pointer]
< right[right_pointer]:)
left_pointer +=
1else:)
right_pointer +=
1 result += left[left_pointer:
] result += right[right_pointer:
]return result
if __name__ ==
'__main__'
:list=[
23,44,
30,24,
6,3,
9,7,
66]print
(merge_sort(
list
))
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...