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