歸併排序之python實現

2021-10-01 11:43:00 字數 759 閱讀 9995

將兩個有序數列合併成乙個有序數列,此過長叫做歸併排序。對乙個序列通過歸併演算法進行排序時,可先講此序列拆分成多個兩兩一組的序列,然後歸併。本文主要描述歸併過程,並假設按照遞增進行排序。

歸併過程並不複雜,過程可描述為。根據條件遞增遍歷兩個序列。取出第乙個元素與另乙個序列的第乙個元素進行比較。拿出較小的元素放到目標序列中,並將此序列下標進行加一操作。如果其中乙個序列遍歷完畢,則將另乙個序列的全部元素依次放入目標序列中。由於兩個序列都是有序的,當其中乙個已遍歷完畢。則另乙個序列剩餘的元素一定比這個序列的所有元素要大。

**描述如下。

a=[2,4,5,7,1,2,3,6]

i=0l=

r=for data in a:

if i<4:

else:

i+=1

i=0j=0

for k in range(8):

if(j==4):

a[k]=l[i]

i+=1

elif i==4:

a[k]=r[j]

j+=1

else:

if(l[i]<=r[j]):

a[k]=l[i]

i+=1

else:

a[k]=r[j]

j+=1

print a

以上**最後會輸出a為 1,2,2,3,4,5,6,7。

其中對i和j是否等於4的判斷既是在判斷是否有其中乙個序列結束了遍歷。如果是,則將另乙個序列的元素放到a中。

python實現歸併排序

歸併排序,先把陣列按中間分為2個單元,直至每個單元僅包含1個元素,然後依次合併2個單元至一臨時陣列 def merge str,start index,end index,mid,temp j start index k mid 1 i 0while j mid and k end index if...

Python實現歸併排序

def mergesort seq if len seq 1 return seq else mid int len seq 2 lpart mergesort seq mid rpart mergesort seq mid return merge lpart,rpart defmerge lpa...

Python實現歸併排序

歸併排序是典型的分治法的應用 思想 先遞迴分解陣列,再合併陣列 原理 將陣列分解最小之後,然後合併兩個有序陣列,基本思想是比較兩個陣列的最前面的數,誰小就取誰,取完後,將相應的指標後移以為。然後再比較,直到乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。python 實現 歸併排序 def m...