归并排序算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了归并排序算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1793字,纯文字阅读大概需要3分钟。
内容图文
![归并排序算法](/upload/InfoBanner/zyjiaocheng/1137/a939011cee3a4c9a8b6269d823043784.jpg)
因为要备课,写了一下归并排序。当然还可以优化。
# coding: utf-8 # In[79]: import math def split_list(main_list,list_len=2): ‘‘‘ 分割列表 按照list_len分割成列表,返回一个多维列表 ‘‘‘ start_num = 0 max_step = math.ceil(len(main_list)/list_len) #需要循环的次数 new_list = [] for i in range(max_step): new_list.append(main_list[start_num:start_num+list_len]) #变成新列表 start_num += list_len return new_list # In[80]:def retun_num(a,b,max_sort=True): ‘‘‘ 按大小返回a和b ‘‘‘if max_sort: if a > b: return [a,b] else: return [b,a] else: if a > b: return [b,a] else: return [a,b] # In[86]:def merge_list(list_a,list_b,max_sort=True): ‘‘‘ 合并列表 ‘‘‘ new_list = [] if max_sort: while True: if list_a[0]>list_b[0]: new_list.append(list_a[0]) #把大的扔新列表里,然后扔掉这个元素 list_a.pop(0) if len(list_a)>0: #没扔没就继续,扔没了就把另一个合并进来,因为另一个已经排序完了continueelse: return new_list+list_b else: new_list.append(list_b[0]) list_b.pop(0) if len(list_b)>0: continueelse: return new_list+list_a else: while True: if list_a[0] < list_b[0]: #把小的扔进新列表,然后扔掉这个元素,同上 new_list.append(list_a[0]) list_a.pop(0) if len(list_a)>0: continueelse: return new_list+list_b else: new_list.append(list_b[0]) list_b.pop(0) if len(list_b)>0: continueelse: return new_list+list_a # In[89]:def sort_algorithms(main_list,max_sort=True): ‘‘‘ 逻辑函数 ‘‘‘ split_main_list = split_list(main_list) #切分成2个的元素 done_list = [] for small_list in split_main_list: #第一次排序if len(small_list) > 1: done_list.append(retun_num(small_list[0],small_list[1],max_sort=max_sort)) else: done_list.append(small_list) max_list = done_list[0] #初始化边界for i in range(1,len(done_list)): #递归一波 max_list = merge_list(max_list,done_list[i],max_sort=max_sort) return max_list # In[91]: main_list = [11,21,3,12,6,22,18,100,500,66,28] sort_algorithms(main_list,max_sort=False)
原文:https://www.cnblogs.com/redheat/p/9404732.html
内容总结
以上是互联网集市为您收集整理的归并排序算法全部内容,希望文章能够帮你解决归并排序算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。