java实现简单归并排序算法(初学入门)
来源:互联网 发布:雷欧mac全灭赛文复活 编辑:程序博客网 时间:2024/04/28 02:41
归并排序
归并排序是采用分治法的思想,将已经排好序的两个子序列合并成一个有序的子序列,建立在归并操作上的一种有效的排序算法。归并排序的思想很多算法书上和网上都有,博主比较小白,就不在这里给大家进行详细的讲解了。
下面是简单的归并排序算法:
package cn.swu.edu;import java.util.Arrays;public class Merge// Merge(排序)类{ /* * 对子序列进行排序 * a[]数组 * first 指示序列第一个元素 * last 指示序列最后一个元素 * */ public static void merge(int[] a, int first, int mid, int last) { // temp数组长度为序列长// int[] temp = new int[last - first + 1]; // 左边子序列第一个元素 int i = first; // 右边子序列第一个元素 int j = mid + 1; int k = 0; /* * 把较小的数先移到新数组中 * 通过递归寻找原数组中比较的数值 */ while (i <= mid && j <= last) { if (a[i] < a[j]) { temp[k++] = a[i++]; } else { temp[k++] = a[j++]; } } // 把左边剩余的数移入数组 while (i <= mid) { temp[k++] = a[i++]; } // 把右边边剩余的数移入数组 while (j <= last) { temp[k++] = a[j++]; } // 把新数组中的数覆盖a数组 for (int k2 = 0; k2 < temp.length; k2++) { a[k2 + first] = temp[k2]; } } /* * 归并排序思路: * 先分割--将整的序列先分成一个个子序列 * 在排序--将分割的子序列分别进行排序 * 后合并--将排好序的子序列合并 * 再排序--再将最后合并的序列排序 */ public static void mergeSort(int[] a, int low, int high) { int mid = (low + high) / 2; if (low < high) { // 左边排序 mergeSort(a, low, mid); // 右边排序 mergeSort(a, mid + 1, high); // 左右归并 merge(a, low, mid, high); System.out.println(Arrays.toString(a)); } } public static void main(String[] args) { int a[] = { 4, 3, 2, 1, 5, 6, 7, 8, 9, 10 }; mergeSort(a, 0, a.length - 1); System.out.println("排序结果:" + Arrays.toString(a)); }}
运行结果:
[3, 4, 2, 1, 5, 6, 7, 8, 9, 10]
[2, 3, 4, 1, 5, 6, 7, 8, 9, 10]
[2, 3, 4, 1, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
排序结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
算法比较简单,因为博主本人也是这几天才算真正学习了归并排序算法,这个代码是对归并排序的一个非常简单的应用,这个代码部分是博主之前参考网上的例子自己整理的,之后自己有重新写了一遍加深印象,第一次写博客。如果哪里有错误,还请各位大佬指出来,如果有需要的我们可以一起交流学习。
阅读全文
1 0
- java实现简单归并排序算法(初学入门)
- java实现简单排序算法:归并排序
- MergeSort(归并排序)算法Java实现
- 日学一算法---归并排序(java实现)
- Java实现算法归并排序(MergeSort)
- Java 归并排序(MergeSort)算法实现
- 归并排序算法(Java实现)
- 算法入门---java语言实现的归并排序小结
- java实现归并排序算法
- Java归并排序算法实现
- java实现归并排序算法
- java实现归并排序算法
- 归并排序算法Java实现
- 算法-Java实现归并排序
- 简单排序Java实现(二):归并排序,快速排序
- 排序算法之快速排序、归并排序(java实现)
- 排序算法(五):JAVA实现归并排序
- 【常用排序算法】归并排序(Java实现)
- Centos中文乱码
- HTML-表格标签
- Session和Cookie的主要区别
- iOS 序列化与反序列化(runtime) 01
- Java基础---main函数,单例模式
- java实现简单归并排序算法(初学入门)
- 日记(数组打印图片)
- 一些感慨,一些感动(大部分时间是犯傻)
- 多维数组 函数参数传递
- 递归调用 01
- VS 编写c++dll库文件
- Java基础---继承
- Unreal Engine 4 物品和摄像机控制
- 22. 排序--排序算法的比较