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; }}