基本思路
归纳排序是采用分治法的典型应用。
1、先归还分解组,再合并组。基本构思是将数组分解到最小,然后合并两个有序数组。
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<len(left_li)andright_pointer<len(right_li): 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学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。