归并排序

来源:互联网 发布:行政审批软件 编辑:程序博客网 时间:2024/06/05 08:40

public class mergeSort {public static void main(String []  args){int[] b={72,73,71,23,94,16,5,68,64};mergeSort(b);for(int i=0;i<b.length;i++){System.out.print(b[i]+"   ");}}public static  void mergeSort(int [] a){int [] tmpArray=new int[a.length];//临时数组mergeSort(a,tmpArray,0,a.length-1);}private  static void mergeSort(int []a,int [] tmp,int left,int right){if(left<right){int center=(left+right)/2;mergeSort(a,tmp,left,center);mergeSort(a,tmp,center+1,right);merge(a,tmp,left,center+1,right);}}private static  void merge(int []a,int[]tmp,int leftPos,int rightPos,int rightEnd){int leftEnd=rightPos-1;int tmpPos=leftPos;int numElements=rightEnd-leftPos+1;//主循环while(leftPos<=leftEnd&&rightPos<=rightEnd){if(a[leftPos]<=a[rightPos]){tmp[tmpPos++]=a[leftPos++];}else{tmp[tmpPos++]=a[rightPos++];}}//将左边 剩余的 元素放进tmp[]里while(leftPos<=leftEnd){tmp[tmpPos++]=a[leftPos++];}//将右边 剩余的 元素放进tmp[]里while(rightPos<=rightEnd){tmp[tmpPos++]=a[rightPos++];}//将临时数组放进a[]里for(int i=0;i<numElements;i++,rightEnd--){a[rightEnd]=tmp[rightEnd];}}}




原创粉丝点击