java 归并排序
2014-06-24 14:29
330 查看
package algorithm; public class MergeSort { public static void main(String[] args) { int a[] =new int []{ 5, 3, 6, 2, 1, 9, 4, 8, 7 }; System.out.println("*************start*************"); print(a); System.out.println("*******************************"); mergeSort(a,0,a.length-1); System.out.println("***********later:**********"); print(a); } private static void print(int[] a) { // TODO Auto-generated method stub for(int i=0;i<a.length;i++) System.out.print(a[i]+" "); System.out.println(""); } private static void mergeSort(int[] a, int i, int j) { // TODO Auto-generated method stub //递归结束条件 if(i>=j) return ; int middle=(i+j)/2; // 对左边数组进行递归 mergeSort(a, i, middle); // 对右边数组进行递归 mergeSort(a, middle+1, j); // 合并 merge(a,i,middle,j); print(a); } private static void merge(int[] a, int i, int m, int j) { // TODO Auto-generated method stub int[] temp = new int[a.length];//临时数组 int left = i;//临时数组的索引 int right = m+1;//右数组第一个元素索引 int le = i;//左数组第一个元素索引 while( i <= m && right <= j){ if(a[i] <= a[right]) temp[left++]=a[i++]; else temp[left++]=a[right++]; } while(i<=m) temp[left++]=a[i++]; while(right<=j) temp[left++]=a[right++]; while(le <= j) a[le] = temp[le++]; } }
相关文章推荐
- JavaSwing的归并排序动画
- java排序之肆------归并排序代码
- java数据结构代码记录---归并排序代码
- 【排序算法】归并排序原理及Java实现
- 归并排序 & 数组中的逆序对 【java实现】
- java中的排序算法——归并排序
- java基本排序之归并排序
- 气泡,归并,插入,快速,选择排序java实现
- Java实现归并排序和快速排序
- Java归并排序的实现
- java实现归并排序及求逆序对
- 程序员必知的8大排序(java实现)(三)(冒泡+快速+归并)
- java排序--归并排序
- 排序算法Java描述:选择、冒泡、插入、希尔、归并、快速及三向切分快速排序
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- 【算法】归并排序的java实现
- java实现的排序(插入/希尔/归并)
- Java归并排序
- 归并排序的java实现
- Java-时间复杂度为O(nlogn)的排序算法(快速排序, 归并排序, 堆排序, 希尔排序)