当前位置: 首页 > news >正文

算法通关村——归并排序

归并排序

1、归并排序原理

​ 归并排序是一种很经典的分治策略

​ 归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干小的数组,分成几个比较小的结构,然后是利用归并的思想实现的排序方法。将一个大的问题分解成一些小的问题分别求解,再将求解出来的各个答案合并d到一起。

​ 归并排序的过程如下图所示:

归并排序过程

​ 可以看到,阶段可以理解成递归拆分子序列的过程,阶段就是将两个已经有序的子序列合并成一个有序序列的过程。

​ 遍历递归的过程如下:

归并排序递归过程

2、代码实现

​ 归并排序的具体代码如下:

public static void mergeSort(int[] array, int start, int end, int temp[]) {if (start >= end) {return;}mergeSort(array, start, (start + end) / 2, temp);mergeSort(array, (start + end) / 2 + 1, end, temp);merge(array, start, end, temp);
}public static void merge(int[] array, int start, int end, int temp[]) {int middle = (start + end) / 2;int left = start;int right = middle + 1;int index = left;while (left <= middle && right <=end) {if (array[left] < array[right]) {temp[index++] = array[left++];} else {temp[index++] = array[right++];}}while (left <= middle) {temp[index++] = array[left++];}while (right <= end) {temp[index++] = array[right++];}for (int i = start; i <= end; i++) {array[i] = temp[i];}
} 
http://www.lryc.cn/news/231250.html

相关文章:

  • SDL2 播放音频数据(PCM)
  • 优秀智慧园区案例 - 重庆AI PARK智慧创意园区,先进智慧园区建设方案经验
  • 如何编写一个Perl爬虫程序
  • linux查看当前目录大小及磁盘大小
  • windows系统pycharm程序通过urllib下载权重https报错解决
  • Python数据结构: 列表(List)详解
  • 查找py源代码目录
  • React Virtual DOM及Diff算法
  • Spark通过三种方式创建DataFrame
  • 【坑】idea终端下执行maven命令行报错:mvn clean install -Dspring.profiles.active=dev
  • Linux下mysql安装配置教程
  • 在 Electron上安装better-sqlite3出错
  • 利用网络管理解决方案简化网络运维
  • C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录
  • 使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统
  • 后端接口错误总结
  • 将scut-seg标签转化成通用coco标签
  • 阿里云添加端口
  • Linux组调度
  • 深入解析JavaScript中的变量作用域与声明提升
  • 【Python】jupyter notebook(学习笔记)
  • 红色旅游AR互动体验将景区推向更广泛的市场
  • VR全景:打造虚拟政务服务,打通服务群众“最后一公里”
  • PyCharm 安装库时显示连接超时
  • 那些让我苦笑不得的 Bug:编码之路的坎坷经历
  • http接口测试—自动化测试框架设计
  • HTML 之常用标签的介绍
  • 数据恢复入门分享-启动扇区
  • 解决Chrome无法自动同步书签
  • Java绘图-第19章