歸併排序採用分而治之的方法,遞迴求解。
- 將長度為n的列表分成兩個長度為n/2的子串行
- 對兩個子串行分別採用歸併排序
- 將兩個排序好的子串行合併成乙個最終的排序列表
**如下:
# -*- coding:utf-8 _*-
# @author: dreams
# @file: merge_sort.py
# @time: 2018/7/26 9:29
import random
defmerge
(left, right):
i, j = 0, 0
results = list()
while i < len(left) and j < len(right):
if left[i] <= right[j]:
i += 1
else:
j += 1
results += left[i:]
results += right[j:]
return results
defmerge_sort
(array):
# 結束遞迴條件
if len(array) <= 1:
return array
length = len(array) // 2
# 對切片遞迴呼叫歸併排序函式進行排序
left = merge_sort(array[:length])
right = merge_sort(array[length:])
# 合併分片
return merge(left, right)
array = [random.randrange(100) for i in range(10)]
print
'before sort:\n', array
print("-------final-------")
print merge_sort(array)
輸出結果:
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...
歸併排序(Python)
歸併排序的核心思想 如果要排序乙個陣列,我們先把陣列從中間分成前後兩部分,然後對前後兩部分分別排序,再將排好序的兩部分合併在一起,這樣整個陣列就都有序了。歸併排序的執行效率與要排序的原始陣列的有序程度無關,所以其時間複雜度是非常穩定的,不管是最好情況 最壞情況,還是平均情況,時間複雜度都是o nlo...