归并排序_java实现

来源:互联网 发布:xy苹果助手for mac版 编辑:程序博客网 时间:2024/05/17 20:11


public class MergeSort {
 private static int n=10;
 public static void main(String[] args) {
  int a[] = new int [n];
  int sort[] = new int [n];
  Scanner sc = new Scanner(System.in);
  for(int i = 0;i<a.length;i++){
   a[i] = sc.nextInt();
  }
  mergeSort(a,sort,0,a.length-1);
  for(Integer obj:sort){
   System.out.println(obj);
  }
 }

 private static void mergeSort(int[] unsort, int[] sort, int left, int right) {
  if(left>=right){
   return;
  }
  
  int mid = (left+right)/2;
  mergeSort(unsort,sort,left,mid);//mid归后半段数组
  mergeSort(unsort, sort, mid+1, right);
  sort(unsort,sort,left,right,mid);
 }

 private static void sort(int[] unsort, int[] sort, int left, int right,
   int mid) {
  int i = left;
  int j = mid+1;
  int t = 0;
  while(i<=mid&&j<=right){
   if(unsort[i]<unsort[j]){
    sort[t++] = unsort[i];
    i++;
   }else{
    sort[t++] = unsort[j];
    j++;
   }
  }
  while(i<=mid)
   sort[t++] = unsort[i++];
  while(j<=right)
   sort[t++] = unsort[j++];
  for(int x = 0;x<t;x++)
   unsort[left+x] = sort[x];
 }
}

0 0
原创粉丝点击