python歸并排序的基本思路
基本思路
歸納排序是采用分治法的非常典型的應(yīng)用。
1、先歸還分解組,然后合并組?;緲?gòu)想是將數(shù)組分解到最小,然后合并兩個(gè)有序數(shù)組。
2、基本構(gòu)想是比較兩個(gè)數(shù)組的最前面的數(shù)量,誰(shuí)小就先取誰(shuí),取后取相應(yīng)的指針后移。
然后進(jìn)行比較,直到一個(gè)組是空的,最后復(fù)制另一個(gè)組的剩馀部分即可。
實(shí)例
#歸并排序
defmerge_sort(alist):
'''歸并排序'''
n=len(alist)
ifn<=1:
returnalist
else:
mid=n//2
#left表示采用歸并排序后形成的有序的新的列表
left_li=merge_sort(alist[:mid])
#right表示采用歸并排序后形成的有序的新的列表
right_li=merge_sort(alist[mid:])
#將兩個(gè)有序的子序列合并成一個(gè)新的整體
#merge(left,right)
left_pointer,right_pointer=0,0
result=[]
whileleft_pointer ifleft_li[left_pointer]<=right_li[right_pointer]: result.append(left_li[left_pointer]) left_pointer+=1 else: result.append(right_li[right_pointer]) right_pointer+=1 result+=left_li[left_pointer:] result+=right_li[right_pointer:] returnresult if__name__=='__main__': alist=[54,26,93,17,77,31,44,55,20] print(alist) sorted_alist=merge_sort(alist) print(sorted_alist) 以上就是python歸并排序的基本思路,希望對(duì)大家有所幫助。更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。