歸併排序(python)

2021-10-02 23:54:16 字數 1312 閱讀 6485

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