# coding = utf-8
import random
import sys
#歸併排序
list=[
]# 隨機生成列表
defgenerate()
: n =
int(
input
("請輸入本次排序數字個數:"))
while n >0:
list0,
1000))
n -=
1print
("生成的數字列表如下:%s"
%list
)def
marge
(leftlist,rightlist)
: otherlist =
h = j =
0while j <
len(leftlist)
and h <
len(rightlist)
:if leftlist[j]
< rightlist[h]:)
j +=
1else:)
h +=
1if j ==
len(leftlist)
:for i in rightlist[h:]:
else
:for i in leftlist[j:]:
return otherlist
# 對列表進行歸併排序
defmargesort
(marklist):if
len(marklist)
<=1:
return marklist
middle =
len(marklist)//2
leftlist = margesort(marklist[
:middle]
) rightlist = margesort(marklist[middle:])
return marge(leftlist,rightlist)
defmain()
: generate(
)print
("排序後數字列表如下:%s"
% margesort(
list))
if __name__ ==
'__main__'
:try
: main(
)except keyboardinterrupt:
sys.stderr.write(
"退出\n"
) sys.exit(
0)
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...