使用分而治之编写非递归合并排序算法
def merger_sort(s): # 待排序数组def merges(low, mid, high):q = [0] * (high - low + 1)i, j, k = low, mid + 1, 0while (i <= mid) & (j <= high):if s[i] < s[j]:q[k] = s[i]i += 1else:q[k] = s[j]j += 1k += 1if i == mid + 1:q[k:] = s[j:high + 1]else:q[k:] = s[i:mid + 1]s[low:high + 1] = qn = len(s)part = [[0, int((n-1)/2), n-1]] # 最开始的分割for value in part:low = value[0]mid = value[1]high = value[2]if high - low > 2:part.append([low, int((low+mid)/2), mid])part.append([mid + 1, int((high+mid+1)/2), high])if high - low == 2:part.append([low, int((low+mid)/2), mid])while part:[l, m, h] = part.pop(-1)merges(l, m, h)return s
s = [2, 4, 6, 3, 1, 5, 3, 7, 9, 8]print(merger_sort(s))
[1, 2, 3, 3, 4, 5, 6, 7, 8, 9]
使用分而治之编写非递归合并排序算法相关推荐
- C++非递归合并排序的通用实现算法(附完整源码)
C++非递归合并排序的通用实现算法 C++非递归合并排序的通用实现算法完整源码(定义,实现,main函数测试) C++非递归合并排序的通用实现算法完整源码(定义,实现,main函数测试) #inclu ...
- 合并排序算法排序过程_基本算法:合并排序
合并排序算法排序过程 每个程序员都需要了解他们的算法和数据结构. 在研究它们时,您需要确保确切了解它的功能,时间和空间的复杂性以及采用这种方式的原因,并且不仅能够对其进行编码,而且能够手动执行. 这就 ...
- pythonsort函数时间复杂度_合并排序算法——时间复杂度详解和python代码实现
递归形式 递归形式是算法中常用到的一种构造思路.递归允许函数或过程对自身进行调用,是对算法中重复过程的高度概括,从本质层面进行刻画,避免算法书写中过多的嵌套循环和分支语法.因此,是对算法结构很大的简化 ...
- java合并排序_Java中的合并排序算法
合并排序算法是一种分而治之的算法.在分而治之的范式中,一个问题被分解成较小的问题,其中每个小问题仍然保留着大问题的所有属性--大小除外.为了解决原始问题,每个部分都是单独解决的,然后这些部分又合并在一 ...
- c语言合并排序算法_合并排序算法
c语言合并排序算法 Merge Sort follows the rule of Divide and Conquer to sort a given set of numbers/elements, ...
- 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一
合并排序算法排序过程 What is sorting? 什么是分类? Sorting allows us to process our data in a more organized and eff ...
- c++两个vector合并_数据结构——算法初步(4)——合并排序算法
从之前的学习可以看到,对大型vectory要求的排序,选择排序算法显然不符合要求,因为运行时间与输入问题规模大小的平方成比例增加,对于以线性顺序处理向量的元素的大多数排序算法也是如此. 所以要采用不 ...
- 排序算法python实现_合并排序算法– Java,C和Python实现
排序算法python实现 Merge sort is one of the most efficient sorting algorithms. It works on the principle o ...
- 非递归创建排序二叉树
非递归创建排序二叉树 今天,博主写了关于一个非递归创建排序二叉树的算法,平时,我们常见的都是递归创建排序二叉树,但是递归的空间复杂度也更高为o(n),相反,非递归的空间复杂度则为o(1),下面是代码, ...
- 两个有序单链表的合并排序算法
设计两个有序单链表的合并排序算法 ListList MergeList(LiskList La, LinkList Lb){Lnode *pa = La->next;Lnode *pb = Lb ...
最新文章
- 数字化正在使CIO职责发生变化
- Visual Studio 2015价格大幅下调
- 树莓派python编程案例-树莓派Python编程指南.pdf
- c语言使单片机输出低电平,单片机开发中的一些实用技巧
- 放大缩小保证div对齐_GraphPad Prism 绘图教程 | 如何在图表中对齐对象
- linux cmake 安装mysql5.5.11_以及更高版本_linux cmake 安装mysql5.5.11,以及更高版本
- bash: 未预期的符号 `( 附近有语法错误_安规群中关于泄漏电流测试、接地符号等相关的6个问题,快来围观大神的回答吧!...
- jeecg 与 jeecg-p3有什么区别?
- 如何用Colab运行XGBoost模型
- java 访问网络驱动器_尝试通过GitLab Runner脚本访问网络驱动器但收到错误
- 通过精益售后服务提升企业竞争力
- 软件工程(软件维护)
- HTML5期末大作业:仿华为手机商城网站设计——仿华为手机电子商城 (1页) HTML+CSS+JavaScript html网页制作期末大作业成品_网页设计期末作业
- Kali Linux信息收集工具全集
- python 缩放图片_Python实现图片尺寸缩放脚本
- idea设置author注解
- 2023年1月编程语言流行度排名
- 自己写的随手记事程序
- 信息安全-网络安全风险评估技术原理与应用(一)
- ScheduledExecutorService 实现定时任务及取消任务
热门文章
- 用18行代码画出美丽图案 python 3.10
- Java基础题——高斯数位和
- Lessonnbsp;5nbsp;Nonbsp;wrong…
- 发过Nature文章的大咖一周内教您学会挖掘单细胞测序公共数据库来发表文章 1月25-29日...
- 深圳云控安全智慧配电方案商
- I2C通信协议详解和通信流程分析
- PDF下载 | 复旦大学机器学习、深度学习公开课
- 腾讯2019年暑期实习生招聘提前批在线笔试技术研究和数据分析方向
- 电子科技大学计算机学刘峰林,杨国武 - 电子科技大学 - 计算机科学与工程学院...
- 微信小程序调定位失败或提示 chooseLocation:fail the api need to be declared in the requiredPrivateInfos field in