归并排序——java实现

来源:互联网 发布:泰国打车软件 编辑:程序博客网 时间:2024/05/22 12:27
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);}}

0 0
原创粉丝点击