java实现归并排序及求逆序对

来源:互联网 发布:mysql如何查看 编辑:程序博客网 时间:2024/05/23 15:12

public class merge_sort {   public int count;   public int N;   public int[] num = new int[N];   private int infinity = 10000;      public merge_sort(int[] num, int N){  this.num = num;  this.N=N;   }      //merge_sort   void merge_sort(int[] num, int start, int end){  int middle;  if(start<end){  middle = (int)(start+end)/2;  merge_sort(num, start, middle);  merge_sort(num, middle+1, end);  merge(num, start, middle, end);  }   }      void merge(int[] num, int start, int middle, int end){  int n1 = middle-start+1;  int n2 = end-middle;  int[] L = new int[n1+1];  int[] R = new int[n2+1];  int i=0,j=0,k=0;    for(i=0;i<n1;i++){  L[i] = num[start+i];  }  for(j=0;j<n2;j++){  R[j] = num[middle+1+j];  }  L[n1] = infinity;  R[n2] = infinity;    i=j=0;  for(k=start;k<=end;k++){  if(L[i]<R[j]){  num[k] = L[i];  i++;  }  else{  num[k] = R[j];  count = count+n1-i;  j++;  }  }  L=null;  R=null;   }}




原创粉丝点击