您现在的位置是:课程教程文章
python归并排序算法过程图示详解
2023-12-18 16:59课程教程文章 人已围观
-
奇速英语初中英语七年级上外研版重点单
奇速英语初中英语七年级上外研版重点单针对对象: 初中生,有一定英语基础的学员 课程介绍: 本课程主要针对全国中... -
【云贝教育】Oracle SQL Tuning算法与实战
【云贝教育】Oracle SQL Tuning算法与实战课程详情请扫描上方的微信二维码,云贝教育不定期的技术分享课等你哦 课程... -
Github全面详解
Github全面详解GitHub是建立在Git的分布式版本控制系统之上的一个协作平台,是分享和协作代码... -
易语言易大漠命令详解实战案例项目入门
易语言易大漠命令详解实战案例项目入门第01课注册大漠 第02课鼠标命令 第03课 键盘命令与其他键鼠命令 第04课颜色命令...
关于python的算法一直都是让我们又爱又恨,但是如果可以灵活运用起来,对我们的编写代码过程,可以大大提高效率,针对算法之一“归并排序”的灵活掌握,一起来看下吧~
归并算法——小试牛刀
实例内容:
有 1 个无序列表如下:
list = [23,35,12,34,54,78,76,99]
要求:使其按从小到大排序
图示思路
Python 代码
归并排序理解:
1.通过二分法把一个数组按照递归拆分为左右两组(至到独立元素为止)
2.按照从底层往高层的方法左右数组对比,同时对两个数组的第一个位置进行比大小,将小的放入一个空数组,然后被放入空数组的那个位置的指针往后移一个,然后继续和另外一个数组的上一个位置进行比较,以此类推。到最后任何一个数组先出栈完,就将另外i一个数组里的所有元素追加到新数组后面。
示例:
def merge(a, b): c = [] h = j = 0 while j < len(a) and h < len(b): if a[j] < b[h]: c.append(a[j]) j += 1 else: c.append(b[h]) h += 1 if j == len(a): for i in b[h:]: c.append(i) else: for i in a[j:]: c.append(i) return c def merge_sort(lists): if len(lists) <= 1: return lists middle = len(lists)/2 left = merge_sort(lists[:middle]) right = merge_sort(lists[middle:]) return merge(left, right) if __name__ == '__main__': a = [4, 7, 8, 3, 5, 9] print merge_sort(a)
通过两组示例,相信大家对归并排序有一定理解了吧~如需了解更多python实用知识,点击进入PyThon学习网教学中心。
课程教程:python归并排序算法过程图示详解下一篇:没有了