算法 排序算法之归并排序 java实现
来源:互联网 发布:淘宝卖家自动回复语 编辑:程序博客网 时间:2024/06/05 20:51
package SortArith;/** * 归并排序 * 递归,将原数组一分为二为两个数组,分别对两数组进行排序,将两排序后数组进行合并。 * @author lwk * 时间复杂度O(nlogn) * 空间复杂度O(n+logn) * 稳定排序 */public class MergeSort { public static void mergeSort(int[] array){ if(array == null || array.length ==0){ return; } mergeSort(array,0,array.length-1); } public static void mergeSort(int[] array,int start,int end){ if(start < end){ int mid = (start + end)/2; //将数组一分为二,分别排序后,再合并数组 mergeSort(array,start,mid); mergeSort(array, mid+1, end); //合并数组时要进行排序 merge(array,start,mid,end); } } public static void merge(int[] array,int start,int mid,int end){ //构建新数组,将左右数组合并为有序的新数组 int[] tempArr = new int[end - start + 1]; //第一个数组的起始位置为start int left = start; //第二个数组的起始位置 int right = mid + 1; //新数组的起始位置为零 int third = 0; while(left <= mid && right <= end){ if(array[left] <= array[right]){ //将较小值先赋给新数组 tempArr[third++] = array[left++]; }else{ tempArr[third++] = array[right++]; } } //若左数组指针未指向mid,说明左数组还有余下元素待装入新数组 while(left <= mid){ tempArr[third++] = array[left++]; } while(right <= end){ tempArr[third++] = array[right++]; } //此时新数组即为合并后的有序数组 //将新数组的值全部赋给array for (int i = 0; i < tempArr.length; i++) { array[start++] = tempArr[i]; } }}
0 0
- Java实现排序算法之归并排序
- 排序算法之归并排序java实现
- java实现排序算法之归并排序(2路归并)
- 算法 排序算法之归并排序 java实现
- 排序算法之快速排序、归并排序(java实现)
- 算法学习之java实现归并排序
- 归并排序算法之Java实现
- 【java实现】算法导论之归并排序
- Java算法实现之归并排序
- java实现归并排序算法
- Java归并排序算法实现
- java实现归并排序算法
- java实现归并排序算法
- 归并排序算法Java实现
- 算法-Java实现归并排序
- java算法之归并排序
- java算法之归并排序
- Java实现-高效排序算法之归并排序
- Ajax()方法如何与后台交互
- 详细学习和理解Fragment的生命周期!
- BZOJ1415: [Noi2005]聪聪和可可
- 指尖菜谱App从0到1-无限循环轮播广告的实现
- 第16天 内部类
- 算法 排序算法之归并排序 java实现
- SQLITE3操作函数
- HashMap浅析
- Mysql集群的HA原理及配置指南之字段冲突修复(四)
- 科学史上最伟大的十位单身科学家
- Bootstrap手机端下拉菜单(铺满)
- 51nod 1091 线段的重叠
- PHP基础
- JAVA全集-03-面向对象编程