python中的歸併排序

2021-06-22 02:01:28 字數 1021 閱讀 8655

def merge(a, first, end, temp):

if first < end:

mid = (first+end)//2

merge(a, first, mid, temp) #前半部分拍好序

merge(a, mid+1, end, temp) #後半部分拍好序

merger(a, first, mid, end, temp) #每次對前面拍好序的兩個陣列進行合併

else:

return

def merger(a, first, mid, end, temp):

i = first

j = mid + 1

k = 0

while (i <= mid and j < end):

if (a[i] < a[j]):

i = i + 1

else:

j = j + 1

while (i <= mid):

i = i + 1

while (j < end):

j = j + 1

for i in range(len(temp)):

a[first+i] = temp[i]

temp.clear() #這裡記得要清零

a = [1,5,38,78, 4, 56, 21]

print(len(a))

print(a[3])

temp =

merge(a, 0, len(a), temp)

print(a)

得到的結果如下:

這次學習中知道了如下:

1、python中沒有++操作。

2、python中的陣列其實就是list。

3、python中的除法/是浮點數,//是整數。

4、python中的遞迴呼叫限制了多少次。

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

歸併排序採用分而治之的方法,遞迴求解。將長度為n的列表分成兩個長度為n 2的子串行 對兩個子串行分別採用歸併排序 將兩個排序好的子串行合併成乙個最終的排序列表 如下 coding utf 8 author dreams file merge sort.py time 2018 7 26 9 29 i...