歸併排序(Python實現)

2021-10-06 12:21:40 字數 972 閱讀 9730

歸併排序

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

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

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...