NB二人组(二)----归并排序
归并排序的思路:
归并算法程序(配合下图进行思考):
def merge(li,low,mid,high):
i = low
j = mid + 1
ltmp=[]
while i <= mid and j <= high: # 左边有数 且 右边也有数
if li[i] < li[j]: # 左边小于右边
ltmp.append(li[i]) # 把左边的数 添加到 ltmp 这个列表中
i += 1 # 右移一位
else:
ltmp.append(li[j]) # 右边小于左边
j += 1 # 右移
while i <= mid: # 如果左边有剩余
ltmp.append(li[i]) # 将剩余的加入ltmp列表
i += 1 # 右移
while j <= high: # 如果右边有剩余
ltmp.append(li[j]) # 将剩余的加入ltmp列表
j += 1 # 右移
li[low:high+1] = ltmp # 将ltmp这个列表里的数 传给 li 这个列表 li = [1,4,6,7,9,2,3,5,8]
merge(li,0,4,8)
print(li)
打印出来的效果图为:
有了归并怎么用?
def merge(li,low,mid,high):
i = low
j = mid + 1
ltmp=[]
while i <= mid and j <= high: # 左边有数 且 右边也有数
if li[i] < li[j]: # 左边小于右边
ltmp.append(li[i]) # 把左边的数 添加到 ltmp 这个列表中
i += 1 # 右移一位
else:
ltmp.append(li[j]) # 右边小于左边
j += 1 # 右移
while i <= mid: # 如果左边有剩余
ltmp.append(li[i]) # 将剩余的加入ltmp列表
i += 1 # 右移
while j <= high: # 如果右边有剩余
ltmp.append(li[j]) # 将剩余的加入ltmp列表
j += 1 # 右移
li[low:high+1] = ltmp # 将ltmp这个列表里的数 传给 li 这个列表 def mergesort(li,low,high):
if low < high:
mid = (low + high) // 2
mergesort(li,low,mid) # 先分解
mergesort(li,mid+1,high) # 先分解
merge(li,low,mid,high) # 在合并 li = [1,4,6,7,9,2,3,5,8,]
mergesort(li,0,8)
print(li)
NB二人组(二)----归并排序的更多相关文章
- 算法 排序NB二人组 堆排序 归并排序
参考博客:基于python的七种经典排序算法 常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储 ...
- 列表排序之NB三人组附加一个希尔排序
NB三人组之 快速排序 def partition(li, left, right): tmp = li[left] while left < right: while left < ri ...
- 排序NB三人组
排序NB三人组 快速排序,堆排序,归并排序 1.快速排序 方法其实很简单:分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”.先从右往左找一个小于6的数,再从左往 ...
- 算法排序-NB三人组
快速排序: 堆排序: 二叉树: 两种特殊二叉树: 二叉树的存储方式: 小结: 堆排序正题: 向下调整: 堆排序过程: 堆排序-内置模块: 扩展问题topk: 归并排序: 怎么使用: NB三人组小结
- [分享] IT天空的二十二条军规
Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...
- Bootstrap <基础二十二>超大屏幕(Jumbotron)
Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
<Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...
- 二十二、OGNL的一些其他操作
二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $ public class Demo2Action extends ActionSupport { public ...
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]
原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...
- VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池
VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...
随机推荐
- android android.mk中:= ?= +=之间的区别
转自:http://blog.csdn.net/love_xsq/article/details/50395138 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什 ...
- 【php】session读写锁
事件:a文件中操作$_SESSION['start'] = 'yes'; sleep(100); 休眠100s 在这休眠的时间段中,b文件操作$_SESSION['start'] = 'no'; 结 ...
- gridview 第一行编辑
<%@ Page Language="C#" AutoEventWireup="true" Codebehind="Default.aspx.c ...
- PHP中is_null()方法
is_null — 检测变量是否为 NULL bool is_null ( mixed $var ) 如果 var 是 null 则返回 TRUE,否则返回 FALSE. 举例: $x=" ...
- default.properties文件
在地址栏访问某个 action 之所以能访问到,只因为在 default.properties 配置文件中有一个键值对,key 为struts.action.extension,值为 action,, ...
- 第80天:jQuery插件使用
jQuery其他补充+ 4.1 链式编程: end()补充 * 补充五角星 评论案例 * 第一步:鼠标移入,当前五角星和前面的五角星变实体.后面的变空心五角星 * 第二步:鼠标点击的时候,为当前元素添 ...
- WPF中Image控件的Source属性的设置
1.直接关联到文件,关联后不能删除此图片,因为图片正在使用. imageEditImage.Source = new BitmapImage(new Uri(strImagePath, UriKind ...
- Hadoop RPC protocol description--转
原文地址:https://spotify.github.io/snakebite/hadoop_rpc.html Snakebite currently implements the followin ...
- CF487E-Tourists
题意 给出一个\(n\)个点\(m\)条边的无向图,给出每个点的初始点权,\(q\)次操作: 修改一个点的点权 询问两点间的所有路径中最小点权最小的路径上的最小点权 \(n,m,q\le 10^5,w ...
- 导出ORACLE表结构到SQL语句(含CLOB)
转自:http://blog.itpub.net/84738/viewspace-442854/ 先用exp导出空表 exp username/password rows=n file=expor ...