归并排序——java实现

发布时间:2016-12-9 16:05:46 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"归并排序——java实现",主要涉及到归并排序——java实现方面的内容,对于归并排序——java实现感兴趣的同学可以参考一下。

public class MergerSort { public int[] sort(int[] arrs){ if(arrs.length < 2){ return arrs; } // int mid = arrs.length % 2 == 0 ? arrs.length / 2 : (arrs.length - 1) / 2; int mid = arrs.length/2; int[] left = Arrays.copyOfRange(arrs, 0, mid); int[] right = Arrays.copyOfRange(arrs, mid, arrs.length); int[] lres = sort(left); int[] rres = sort(right); return merger(lres, rres); } public int[] merger(int[] lres,int[] rres){ int[] b = new int[lres.length+rres.length]; int l = 0; int r = 0; int i = 0; while(l<lres.length&&r<rres.length){ if(lres[l]<=rres[r]){ b[i] = lres[l]; i++; l++; }else{ b[i] = rres[r]; i++; r++; } } if(l == lres.length){ while(r < rres.length){ b[i] = rres[r]; i++; r++; } } if(r == rres.length){ while(l < lres.length){ b[i] = lres[l]; i++; l++; } } return b; } public static void main(String[] args) { Random random = new Random(); int[] msData = new int[11]; String beforeSort = ""; String afterSort = ""; for(int i=0;i<msData.length;i++){ //随机生成11个排序数 Integer a =random.nextInt(100); msData[i]= a; beforeSort = beforeSort + msData[i] + " "; } System.out.println(beforeSort); MergerSort ms = new MergerSort(); msData = ms.sort(msData); for(int i=0;i<msData.length;i++){ afterSort = afterSort + msData[i] + " "; } System.out.println(afterSort); } }

上一篇:控制台程序如何设置默认窗口位置?
下一篇:VS2008 程序打成CAB包 程序安装后始终是旧版本的exe

相关文章

相关评论