Java中怎么实现归并排序 ,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都网站设计、成都网站制作的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。创新互联公司多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择创新互联公司,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。
public class MergeSort { static int number=0; public static void main(String[] args) { int[] a = {26, 5, 98, 108, 28, 99, 100, 56, 34, 1 }; printArray("排序前:",a); MergeSort(a); printArray("排序后:",a); } private static void printArray(String pre,int[] a) { System.out.print(pre+"\n"); for(int i=0;i=right) return; int mid = (left + right) / 2; //二路归并排序里面有两个Sort,多路归并排序里面写多个Sort就可以了 Sort(a, left, mid); Sort(a, mid + 1, right); merge(a, left, mid, right); } private static void merge(int[] a, int left, int mid, int right) { int[] tmp = new int[a.length]; int r1 = mid + 1; int tIndex = left; int cIndex=left; // 逐个归并 while(left <=mid && r1 <= right) { if (a[left] <= a[r1]) tmp[tIndex++] = a[left++]; else tmp[tIndex++] = a[r1++]; } // 将左边剩余的归并 while (left <=mid) { tmp[tIndex++] = a[left++]; } // 将右边剩余的归并 while ( r1 <= right ) { tmp[tIndex++] = a[r1++]; } System.out.println("第"+(++number)+"趟排序:\t"); // TODO Auto-generated method stub //从临时数组拷贝到原数组 while(cIndex<=right){ a[cIndex]=tmp[cIndex]; //输出中间归并排序结果 System.out.print(a[cIndex]+"\t"); cIndex++; } System.out.println(); } }
看完上述内容,你们掌握Java中怎么实现归并排序 的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!