python歸并排序的基本思路
基本思路
歸納排序是采用分治法的非常典型的應用。
1、先歸還分解組,然后合并組?;緲嬒胧菍到M分解到最小,然后合并兩個有序數組。
2、基本構想是比較兩個數組的最前面的數量,誰小就先取誰,取后取相應的指針后移。
然后進行比較,直到一個組是空的,最后復制另一個組的剩馀部分即可。
實例
#歸并排序
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:])
#將兩個有序的子序列合并成一個新的整體
#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歸并排序的基本思路,希望對大家有所幫助。更多Python學習教程請關注IT培訓機構:千鋒教育。