6 6歸併排序(python資料結構與演算法)

2021-10-08 00:23:55 字數 1299 閱讀 5095

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

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

實現:

def

merge_sort

(alist)

:"""歸併排序"""

n =len(alist)

if n <=1:

return alist

mid = n//

2# 遞迴呼叫

left_sort_list = merge_sort(alist[

:mid]

) right_sort_list = merge_sort(alist[mid:])

# 將分開的左右兩個list各自排好序

left_pointer =

0 right_pointer =

0 sorted_list =

while left_pointer <

len(left_sort_list)

and right_pointer <

len(right_sort_list)

:if left_sort_list[left_pointer]

< right_sort_list[right_pointer]:)

left_pointer +=

1else:)

right_pointer +=

1 sorted_list += left_sort_list[left_pointer:

] sorted_list += right_sort_list[right_pointer:

]return sorted_list

if __name__ ==

"__main__"

: alist =[54

,26,93

,17,77

,31,44

,55,20

]print

(alist)

sorted_list = merge_sort(alist)

print

(sorted_list)

6 6 歸併排序

1 歸併排序 歸併排序是採用分治法的乙個非常典型的應用。歸併排序的思想就是先遞迴分解陣列,再合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。2 歸...

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

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