Java排序算法——归并排序
2017-10-11 19:44
399 查看
归并排序
基本原理:归并排序就是将若干个已经排好序的部分合并成一个有序部分。顺序比较两者相应的元素,小者移入到另一个表中,反复如此即不断地进行递归分解、合并。
时间效率:O(nlog2n)
空间效率:O(n)
算法稳定性:稳定
基本原理:归并排序就是将若干个已经排好序的部分合并成一个有序部分。顺序比较两者相应的元素,小者移入到另一个表中,反复如此即不断地进行递归分解、合并。
时间效率:O(nlog2n)
空间效率:O(n)
算法稳定性:稳定
public class Main{ public static void main(String[] args) { int num[] = {1,5,78,4,35,35,358,35,55,63}; mergeSort(num); System.out.println(java.util.Arrays.toString(num)); } //归并排序 public static void mergeSort(int []num){ sort(num,0,num.length-1); public static void sort(int[]num,int left,int right){ if(left<right){ int center = (left+right)/2; sort(num,left,center); sort(num,center+1,right); merge(num,left,center,right); } } public static void merge(int[]num,int left,int center,int right){ int tempArr[] = new int[right-left+1]; int i = left;//左指针 int j = center+1;//右指针 int k = 0; //将较小的数移入数组 while(i<=center && j<=right){ if(num[i]<num[j]){ tempArr[k++] = num[i++]; }else{ tempArr[k++] = num[j++]; } } //将左边剩余的数移入数组中 while(i<=center){ tempArr[k++] = num[i++]; } //将右边剩余的数移入数组 while(j<=right){ tempArr[k++] = num[j++]; } //覆盖原数组 for(int kk = 0;kk<tempArr.length;kk++){ num[kk+left] = tempArr[kk]; } } }
相关文章推荐
- 【排序算法】归并排序(java实现)
- 排序算法Java实现——归并排序
- 【Java常用排序算法】归并排序(二路归并排序)
- Java 排序算法-归并排序
- Java(.NET)经典排序算法之归并排序
- 各种排序算法-Java-冒泡、选择、插入、快速、归并排序
- [学习笔记]Java排序算法之归并排序
- 排序算法---归并排序 (java)
- 排序算法(二)_希尔排序、快速排序、归并排序的Java实现
- 排序算法之两路归并排序(Java)
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- 排序算法之归并排序(JAVA)
- 分治法在排序算法中的应用(JAVA)--归并排序
- 《排序算法》——归并排序,插入排序(Java)
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 排序算法之归并排序(JAVA)
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 【常用排序算法】归并排序(Java实现)
- 排序算法之归并排序(JAVA)