Python归并排序实例

 时间:2024-11-13 07:01:18

1、打开Python开发工具IDLE,新建‘归并.py’文件,并写代码如下:def guibing(list1): n = len(list1) print (list1) if n==1: return half = n//2 guibing(list1[:half]) guibing(list1[half:])if __name__ == '__main__': list1 = [7,9,3,4] guibing(list1)这是将传入的list进行拆分,拆分的目的是形成单个元素,再组合成有序列表

Python归并排序实例

3、继续编写代码,先将拆分的列表组合,代码如下:def guibing(list1): n = len(list1) print (list1) if n==1: return list1 half = n//2 left_res = guibing(list1[:half]) right_res = guibing(list1[half:]) return left_res+right_resif __name__ == '__main__': list1 = [7,9,3,4] guibing(list1) print (list1)

Python归并排序实例

5、针对拆分的列表进行排序,代码如下:def guibing(list1): n = len(list1) print (list1) if n==1: return list1 half = n//2 left_res = guibing(list1[:half]) right_res = guibing(list1[half:]) return mergersort(left_res,right_res)def mergersort(a,b): c=[] llen = len(a) rlen = len(b) h =0 j=0 while j< llen and h< rlen : if a[j]<b[h]: c.append(a[j]) j+=1 else: c.append(b[h]) h+=1 if j == len(a): #这里不能简单比较a、b长度 for i in b[h:]: c.append(i) else: for i in a[j:]: c.append(i) return c if __name__ == '__main__': list1 = [7,9,3,4,5,8] print (guibing(list1)) #print (list1)

Python归并排序实例

6、F5运行程序,排序正常,注意这里不能再打印传入的list,因为返回的是新列表

  • ccs超出隐藏方法overflow
  • 使用sc命令获取服务的显示名称和服务名称
  • Word2019怎么样修改主题皮肤
  • 解决 N9005 固件更新时遇到问题 官方线 刷 失败
  • 如何更改系统窗口边框和任务栏颜色
  • 热门搜索
    非无菌口罩是什么意思 暗度陈仓是什么意思 收腹带什么时候用 sci是什么意思 msa是什么意思 先考是什么意思 人为什么活着这么累 家里放什么植物好 玛丽苏是什么意思 电子驻车是什么意思