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]

使用分而治之编写非递归合并排序算法相关推荐

  1. C++非递归合并排序的通用实现算法(附完整源码)

    C++非递归合并排序的通用实现算法 C++非递归合并排序的通用实现算法完整源码(定义,实现,main函数测试) C++非递归合并排序的通用实现算法完整源码(定义,实现,main函数测试) #inclu ...

  2. 合并排序算法排序过程_基本算法:合并排序

    合并排序算法排序过程 每个程序员都需要了解他们的算法和数据结构. 在研究它们时,您需要确保确切了解它的功能,时间和空间的复杂性以及采用这种方式的原因,并且不仅能够对其进行编码,而且能够手动执行. 这就 ...

  3. pythonsort函数时间复杂度_合并排序算法——时间复杂度详解和python代码实现

    递归形式 递归形式是算法中常用到的一种构造思路.递归允许函数或过程对自身进行调用,是对算法中重复过程的高度概括,从本质层面进行刻画,避免算法书写中过多的嵌套循环和分支语法.因此,是对算法结构很大的简化 ...

  4. java合并排序_Java中的合并排序算法

    合并排序算法是一种分而治之的算法.在分而治之的范式中,一个问题被分解成较小的问题,其中每个小问题仍然保留着大问题的所有属性--大小除外.为了解决原始问题,每个部分都是单独解决的,然后这些部分又合并在一 ...

  5. c语言合并排序算法_合并排序算法

    c语言合并排序算法 Merge Sort follows the rule of Divide and Conquer to sort a given set of numbers/elements, ...

  6. 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一

    合并排序算法排序过程 What is sorting? 什么是分类? Sorting allows us to process our data in a more organized and eff ...

  7. c++两个vector合并_数据结构——算法初步(4)——合并排序算法

    从之前的学习可以看到,对大型vectory要求的排序,选择排序算法显然不符合要求,因为运行时间与输入问题规模大小的平方成比例增加,对于以线性顺序处理向量的元素的大多数排序算法也是如此. 所以要采用不 ...

  8. 排序算法python实现_合并排序算法– Java,C和Python实现

    排序算法python实现 Merge sort is one of the most efficient sorting algorithms. It works on the principle o ...

  9. 非递归创建排序二叉树

    非递归创建排序二叉树 今天,博主写了关于一个非递归创建排序二叉树的算法,平时,我们常见的都是递归创建排序二叉树,但是递归的空间复杂度也更高为o(n),相反,非递归的空间复杂度则为o(1),下面是代码, ...

  10. 两个有序单链表的合并排序算法

    设计两个有序单链表的合并排序算法 ListList MergeList(LiskList La, LinkList Lb){Lnode *pa = La->next;Lnode *pb = Lb ...

最新文章

  1. 数字化正在使CIO职责发生变化
  2. Visual Studio 2015价格大幅下调
  3. 树莓派python编程案例-树莓派Python编程指南.pdf
  4. c语言使单片机输出低电平,单片机开发中的一些实用技巧
  5. 放大缩小保证div对齐_GraphPad Prism 绘图教程 | 如何在图表中对齐对象
  6. linux cmake 安装mysql5.5.11_以及更高版本_linux cmake 安装mysql5.5.11,以及更高版本
  7. bash: 未预期的符号 `( 附近有语法错误_安规群中关于泄漏电流测试、接地符号等相关的6个问题,快来围观大神的回答吧!...
  8. jeecg 与 jeecg-p3有什么区别?
  9. 如何用Colab运行XGBoost模型
  10. java 访问网络驱动器_尝试通过GitLab Runner脚本访问网络驱动器但收到错误
  11. 通过精益售后服务提升企业竞争力
  12. 软件工程(软件维护)
  13. HTML5期末大作业:仿华为手机商城网站设计——仿华为手机电子商城 (1页) HTML+CSS+JavaScript html网页制作期末大作业成品_网页设计期末作业
  14. Kali Linux信息收集工具全集
  15. python 缩放图片_Python实现图片尺寸缩放脚本
  16. idea设置author注解
  17. 2023年1月编程语言流行度排名
  18. 自己写的随手记事程序
  19. 信息安全-网络安全风险评估技术原理与应用(一)
  20. ScheduledExecutorService 实现定时任务及取消任务

热门文章

  1. 用18行代码画出美丽图案 python 3.10
  2. Java基础题——高斯数位和
  3. Lessonnbsp;5nbsp;Nonbsp;wrong…
  4. 发过Nature文章的大咖一周内教您学会挖掘单细胞测序公共数据库来发表文章 1月25-29日...
  5. 深圳云控安全智慧配电方案商
  6. I2C通信协议详解和通信流程分析
  7. PDF下载 | 复旦大学机器学习、深度学习公开课
  8. 腾讯2019年暑期实习生招聘提前批在线笔试技术研究和数据分析方向
  9. 电子科技大学计算机学刘峰林,杨国武 - 电子科技大学 - 计算机科学与工程学院...
  10. 微信小程序调定位失败或提示 chooseLocation:fail the api need to be declared in the requiredPrivateInfos field in