排序算法(七):归并排序
来源:互联网 发布:linux top命令详解 编辑:程序博客网 时间:2024/06/06 19:52
思路:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
代码实现:
public class MergingSort {public static void main(String[] args) {int a[] = { 49, 38, 65, 56, 17, 18, 23, 34, 15 };sort(a, 0, a.length - 1);for (int i = 0; i < a.length; i++)System.out.println(a[i]);}public static void sort(int[] data, int left, int right) {if (left < right) {// 找出中间索引int center = (left + right) / 2;// 对左边数组进行递归sort(data, left, center);// 对右边数组进行递归sort(data, center + 1, right);// 合并merge(data, left, center, right);}}public static void merge(int[] data, int left, int center, int right) {int[] tmpArr = new int[data.length];int mid = center + 1;// third记录中间数组的索引int third = left;int tmp = left;while (left <= center && mid <= right) {// 从两个数组中取出最小的放入中间数组if (data[left] <= data[mid]) {tmpArr[third++] = data[left++];} else {tmpArr[third++] = data[mid++];}}// 剩余部分依次放入中间数组while (mid <= right) {tmpArr[third++] = data[mid++];}while (left <= center) {tmpArr[third++] = data[left++];}// 将中间数组中的内容复制回原数组while (tmp <= right) {data[tmp] = tmpArr[tmp++];}System.out.println(Arrays.toString(data));}}
得到:
[38, 49, 65, 56, 17, 18, 23, 34, 15]
[38, 49, 65, 56, 17, 18, 23, 34, 15]
[38, 49, 65, 17, 56, 18, 23, 34, 15]
[17, 38, 49, 56, 65, 18, 23, 34, 15]
[17, 38, 49, 56, 65, 18, 23, 34, 15]
[17, 38, 49, 56, 65, 18, 23, 15, 34]
[17, 38, 49, 56, 65, 15, 18, 23, 34]
[15, 17, 18, 23, 34, 38, 49, 56, 65]
15
17
18
23
34
38
49
56
65
阅读全文
0 0
- 排序算法(七):归并排序
- 八大排序算法(七)归并排序
- 排序算法(七):归并排序
- 排序算法(七):归并排序
- 排序算法七:归并排序
- 算法——排序(七)归并排序
- 排序算法(七) 2路归并排序
- 排序算法之七--归并排序
- 排序七 归并排序
- 数据结构与算法之七归并排序
- 数据结构与算法:七种排序算法总结(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序)
- 排序算法-归并排序
- 排序算法------归并排序
- 排序算法-归并排序
- 排序算法---归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- springmvc自定义异常统一处理
- 读《格局逆袭》后感
- 【Linux学习笔记】37:基础正则表达式元字符
- 设计模式-迭代器模式 C++实现
- Bootstrap基础的学习
- 排序算法(七):归并排序
- 配置SSM 后 无法访问静态资源
- android 使用注解
- maximal-rectangle
- 七、Spring Cloud系列:让Logback日志中显示主机名与IP地址
- TpsFs文件系统概述(一)
- [SCOI2005]栅栏 二分+dfs
- [模板] 最小费用最大流
- shell命令-find常用命令