归并排序——java实现
2014-02-13 12:58
183 查看
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); } }
相关文章推荐
- 归并排序的java实现
- 用Java实现归并排序(Merge-Sort)算法
- 归并排序 Java实现(递归试)
- 简单的归并排序—Java实现
- 归并排序--Java实现
- 归并排序(java实现)
- 【转】排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 归并排序之Java实现
- 归并排序的递归与非递归实现理解(Java)
- 算法(第四版)学习笔记之java实现归并排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 归并排序_java实现
- 归并排序 一个简单的java实现
- 归并排序(java实现)
- MergeSort(归并排序)算法Java实现
- java实现各种基础排序(冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、归并排序)
- Java实现归并排序
- 归并排序非递归实现Java
- Java实现快速排序、归并排序、堆排序和希尔排序
- 分治法实现归并排序(JAVA实现)