歸併排序之python實現

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

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

  代碼描述如下。

A=[2,4,5,7,1,2,3,6]
i=0
L=[]
R=[]
for data in A:
    if i<4:
      L.append(data)
    else:
      R.append(data)
    i+=1

i=0
j=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中。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章