归并排序的思路:

归并算法程序(配合下图进行思考):

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二人组(二)----归并排序的更多相关文章

  1. 算法 排序NB二人组 堆排序 归并排序

    参考博客:基于python的七种经典排序算法     常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储 ...

  2. 列表排序之NB三人组附加一个希尔排序

    NB三人组之 快速排序 def partition(li, left, right): tmp = li[left] while left < right: while left < ri ...

  3. 排序NB三人组

    排序NB三人组 快速排序,堆排序,归并排序 1.快速排序 方法其实很简单:分别从初始序列“6  1  2 7  9  3  4  5 10  8”两端开始“探测”.先从右往左找一个小于6的数,再从左往 ...

  4. 算法排序-NB三人组

    快速排序: 堆排序: 二叉树: 两种特殊二叉树: 二叉树的存储方式: 小结: 堆排序正题: 向下调整: 堆排序过程: 堆排序-内置模块: 扩展问题topk: 归并排序: 怎么使用: NB三人组小结

  5. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  6. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  7. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  8. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  9. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  10. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

随机推荐

  1. android android.mk中:= ?= +=之间的区别

    转自:http://blog.csdn.net/love_xsq/article/details/50395138 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什 ...

  2. 【php】session读写锁

    事件:a文件中操作$_SESSION['start'] = 'yes'; sleep(100);  休眠100s 在这休眠的时间段中,b文件操作$_SESSION['start'] = 'no'; 结 ...

  3. gridview 第一行编辑

    <%@ Page Language="C#" AutoEventWireup="true" Codebehind="Default.aspx.c ...

  4. PHP中is_null()方法

    is_null — 检测变量是否为 NULL bool is_null ( mixed $var ) 如果 var 是 null 则返回 TRUE,否则返回 FALSE.  举例: $x=" ...

  5. default.properties文件

    在地址栏访问某个 action 之所以能访问到,只因为在 default.properties 配置文件中有一个键值对,key 为struts.action.extension,值为 action,, ...

  6. 第80天:jQuery插件使用

    jQuery其他补充+ 4.1 链式编程: end()补充 * 补充五角星 评论案例 * 第一步:鼠标移入,当前五角星和前面的五角星变实体.后面的变空心五角星 * 第二步:鼠标点击的时候,为当前元素添 ...

  7. WPF中Image控件的Source属性的设置

    1.直接关联到文件,关联后不能删除此图片,因为图片正在使用. imageEditImage.Source = new BitmapImage(new Uri(strImagePath, UriKind ...

  8. Hadoop RPC protocol description--转

    原文地址:https://spotify.github.io/snakebite/hadoop_rpc.html Snakebite currently implements the followin ...

  9. CF487E-Tourists

    题意 给出一个\(n\)个点\(m\)条边的无向图,给出每个点的初始点权,\(q\)次操作: 修改一个点的点权 询问两点间的所有路径中最小点权最小的路径上的最小点权 \(n,m,q\le 10^5,w ...

  10. 导出ORACLE表结构到SQL语句(含CLOB)

      转自:http://blog.itpub.net/84738/viewspace-442854/ 先用exp导出空表 exp username/password rows=n file=expor ...