原理
歸并操作(歸并算法),指的是將兩個已經(jīng)排序的序列合并成一個序列的操作。歸并排序算法依賴歸并操作。
步驟
1.迭代法
申請空間,使其大小為兩個已經(jīng)排序序列之和,該空間用來存放合并后的序列
設定兩個指針,最初位置分別為兩個已經(jīng)排序序列的起始位置
3.比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置
重復步驟3直到某一指針到達序列尾
將另一序列剩下的所有元素直接復制到合并序列尾
遞歸法
假設序列共有n個元素:
將序列每相鄰兩個數(shù)字進行歸并操作,形成{\displaystylefloor(n/2)}floor(n/2)個序列,排序后每個序列包含兩個元素
將上述序列再次歸并,形成{\displaystylefloor(n/4)}floor(n/4)個序列,每個序列包含四個元素
重復步驟2,直到所有元素排序完畢
代碼
#遞歸法
defmerge_sort(list):
#認為長度不大于1的數(shù)列是有序的
iflen(list)<=1:
returnlist
#二分列表
middle=len(list)//2
left=merge_sort(list[:middle])
right=merge_sort(list[middle:])
#最后一次合并
returnmerge(left,right)
#合并
defmerge(left,right):
l,r=0,0
result=[]
whilel
ifleft[l]
result.append(left[l])
l+=1
else:
result.append(right[r])
r+=1
reslut+=left[l:]
result+=right[r:]
returnresult
以上內容為大家介紹了python歸并排序,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。