简单算法--归并排序

来源:互联网 发布:程序员技术学习 编辑:程序博客网 时间:2024/05/16 16:12
 public static int mgSort(int data[],int m,int n){
  if(m>=n){
   return 0;
  }else{
   mgSort(data,m,(m+n)/2);
   mgSort(data,(m+n)/2+1,n);
   merge(data,m,n,(m+n)/2);
   return 0;
  }
 }
 //合并两个有序数组
 public static void merge(int data[],int m,int n,int k){
  int temp[] = new int[n-m+1];
  int i=m,j=k+1;
  int index=0;
  while(i<=k||j<=n){
   //第一个数组已经结束
   if(i == k+1){
    temp[index]=data[j];
    j++;
    index++;
    continue;
   }
   //第二个数组已经结束
   if(j==n+1){
    temp[index]=data[i];
    i++;
    index++;
    continue;
   }
   //两个数组都没有结束
   if(data[i]<data[j]){
    temp[index]=data[i];
    i++;
    index++;
   }else{
    temp[index]=data[j];
    j++;
    index++;
   }
  }
  //将排好序的值赋给原数组
  for(int p=0;p<n-m+1;p++){
   data[m+p] = temp[p];
  }
 }
原创粉丝点击