python實現歸併排序

2021-09-27 02:46:37 字數 991 閱讀 3561

# 歸併排序

def merge_sort(list):

n = len(list)

# 先將待排序的數拆開

if n <= 1: # 拆分到只有乙個元素為止,返回。

return list

mid = n // 2

# print(list[:mid])

# print(list[mid:])

left_li = merge_sort(list[:mid]) # 歸併排序後產生的新有序列表

right_li = merge_sort(list[mid:])

# print(left_li)

# print(right_li)

# 合併left和right,將2個有序的子串行合併為乙個新的整體

left_pointer, right_pointer = 0, 0

# 存放合併後的結果值

result =

while (left_pointer < len(left_li) and right_pointer right_li[right_pointer]:

right_pointer += 1

else:

left_pointer += 1

if left_pointer < len(left_li):

result += left_li[left_pointer:]

if right_pointer < len(right_li):

result += right_li[right_pointer:]

return result

if __name__ == '__main__':

list = [6, 7, 0, 34, 15, 2, 17]

result = merge_sort(list)

print(result)

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