归并排序-Java
来源:互联网 发布:膜法世家绿豆面膜知乎 编辑:程序博客网 时间:2024/06/05 17:35
归并算法:就是两个有序的序列,通过归并排序,变成一个有序的队列。
如图所示,对于一个序列的排序,可以这样做:首先,将序列分解成单个的数,,然后对相邻的有序序列通过排序逐渐整合为一个大的有序序列。这就是归并排序。
下面是我写的java代码:
public class GuiBingPaiXu { //此方法通过递归将数组分成单个的数字 public static void mergeSort(int[] array, int low, int high) { if(low == high) { return; } int mid = (low + high)>>1; mergeSort(array, low, mid); mergeSort(array, mid+1, high); //调用归并方法,开始两两排序归并 merge(array, low, mid, high); } //此方法用来将单个元素两两归并排序处理 public static void merge(int[] array, int low, int mid, int high) { //用来存放排序好的数,这也是为什么归并排序的空间复杂度是O(n)的原因; int[] orderedArray = new int[high-low+1]; int i = low; int j = mid+1; int k=0; while(i<=mid && j<=high) { if(array[i] <= array[j]) { orderedArray[k++] = array[i++]; } else { orderedArray[k++] = array[j++]; } } //如果高位数组还有值,遍历放到orderedArray数组中 while(j<=high) { orderedArray[k++] = array[j++]; } //如果低位数组还有值,遍历放到orderedArray数组中 while(i<=mid) { orderedArray[k++] = array[i++]; } //最后将有序数组重新写回到对应的原数组的相应位置 k=0; for(int index=low; index<=high; index++) { array[index] = orderedArray[k++]; } } public static void main(String[] args) { int[] a = {1,12,34,54,23,32,12,65,23,11,4,2}; mergeSort(a, 0, a.length-1); for(int i=0; i<a.length; i++) { System.out.print(a[i]+" "); } }}
阅读全文
0 0
- java排序--归并排序
- 排序-归并排序-Java
- 归并排序Java实现
- java归并排序算法
- JAVA归并排序算法
- java归并排序
- java归并排序
- Java实现归并排序
- 归并排序(java)
- 25、JAVA归并排序
- java 归并排序
- java归并排序
- Java归并排序
- 归并排序 java
- Java实现归并排序
- 归并排序Java实现
- java 归并排序
- Java归并排序
- hadoop简介
- SCU 2511 Moooo(单调栈模板题)
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
- js实现鼠标滑动背景跟随
- SETP7 Basic V11 SP2
- 归并排序-Java
- 55. Jump Game
- Servlet的生命周期
- FTP 服务安装
- 来两幅美图
- 在客户端输入URL到页面返回,发生了什么?
- 机器学习人工智能,数学基础知识
- 相册选取图片插入到EditText中,实现图文混排
- h5+vue video使用