Python3 notes

简介: Python3 notes

Python 归并排序


参考方法:

def merge_sort( li ):


   #不断递归调用自己一直到拆分成成单个元素的时候就返回这个元素,不再拆分了

   if len(li)==1:

       return li


   #取拆分的中间位置

   mid = len(li)// 2

   

   #拆分过后左右两侧子串

   left = li[:mid]

   right = li[mid:]


   #对拆分过后的左右再拆分 一直到只有一个元素为止

   #最后一次递归时候ll和lr都会接到一个元素的列表

   # 最后一次递归之前的ll和rl会接收到排好序的子序列

   ll = merge_sort( left )

   rl =merge_sort( right )


   # 我们对返回的两个拆分结果进行排序后合并再返回正确顺序的子列表

   # 这里我们调用拎一个函数帮助我们按顺序合并ll和lr

   return merge(ll , rl)


 


#这里接收两个列表

def merge( left , right ):

   # 从两个有顺序的列表里边依次取数据比较后放入result

   # 每次我们分别拿出两个列表中最小的数比较,把较小的放入result

   result =[]

   while len(left)>0and len(right)>0:

       #为了保持稳定性,当遇到相等的时候优先把左侧的数放进结果列表,因为left本来也是大数列中比较靠左的

       if left[0]<= right[0]:

           result.append( left.pop(0))

       else:

           result.append( right.pop(0))

   #while循环出来之后 说明其中一个数组没有数据了,我们把另一个数组添加到结果数组后面

   result += left

   result += right

   return result


if __name__ =='__main__':

   li =[5,4,3,2,1]

   li2 = merge_sort(li)

   print(li2)

相关文章
|
8月前
|
移动开发 Python
Python3 notes
Python3 notes
|
7月前
|
前端开发 开发工具 数据安全/隐私保护
开源项目推荐-vue2+element+axios 个人财务管理系统
【6月更文挑战第5天】项目简介 vue2+element+axios 个人财务管理系统 是基于 vue2+element+axios 等主流技术栈构建的免费开源的后台管理前端模板。 项目特色 • 简洁易用:无过渡封装 ,易上手。 • 权限管理:用户、角色、菜单、字典、部门等完善的权限系统功能。 • 基础设施:路由、代码规范、Git 提交规范、常用组件封装。 • 持续更新:持续更新,及时跟进最新的技术和工具。 项目预览 登录页面的为动态效果,在刚刷新或者刚进入的时候有个卫星环绕的动画效果,鼠标移动或者悬浮都有不同的动态效果。 首页首次进入效果:
133 1
|
8月前
|
传感器 机器学习/深度学习 算法
恶劣天气条件下激光雷达感知研究综述
恶劣天气条件下激光雷达感知研究综述
227 0
|
8月前
如何使用MybatisPlus的代码生成器功能?
如何使用MybatisPlus的代码生成器功能?
|
弹性计算 云计算 数据可视化
阿里云自助建站的方法---阿里云心选建站
简介: 使用阿里云建网站的三种方式购买云服务器手动建站、云速成美站模板建站或者选择阿里云定制建站三种方式,站长分享利用阿里云创建网站的三种方式及优势对比。
字体结构的Baseline/Leading/Ascent/Descent的图示
字体结构的Baseline/Leading/Ascent/Descent的图示
319 0
字体结构的Baseline/Leading/Ascent/Descent的图示
|
安全 Java 容器
并发编程踩坑实录二:并发容器踩坑总结!!
在上一篇《并发编程踩坑实录一:盘点JDK中同步容器的两大坑!!》中,我们主要一起学习了JDK中同步容器的两个坑,一个是在使用同步容器时可能会出现 竞态条件 的问题,一个是在使用同步容器时用 迭代器遍历容器 可能会踩坑。
239 0
并发编程踩坑实录二:并发容器踩坑总结!!
|
存储 Oracle JavaScript
Java 10的10个新特性,将彻底改变你写代码的方式!
Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了。。 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK 10……
|
机器学习/深度学习 域名解析 弹性计算
阿里云ECS云服务器和轻量应用服务有什么区别及选择方法
轻量应用服务器是轻量级的云服务器,不能搭建集群,适用于单机应用,比如单机网站应用。