Python 歸併排序

2021-08-21 18:53:39 字數 1287 閱讀 7049

歸併排序採用分而治之的方法,遞迴求解。

- 將長度為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...