Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
int64In Reply To:郁闷,总是WA!! Posted by:liuyuyangfoam at 2005-12-20 14:27:52 > //计算逆序数 > private static int solve(int[] array,int n) { > int[] temp = new int[n]; > return mergeSort(array,temp,0,n); > } > // 包括low,不包括high. > private static int mergeSort(int[] src, int[] dest, int low, int high) { > int length = high - low; > if (length==1) return 0; > int mid = (low + high) >> 1; > int c1 = mergeSort(src, dest, low, mid); > int c2 = mergeSort(src, dest, mid, high); > if (src[mid-1]<=src[mid]) { > return c1+c2; > } > int c3 = 0; > int i=low, p = low, q = mid; > while(p<mid&&q<high) { > if (src[p]<=src[q]) { > dest[i++] = src[p++]; > c3 += (q-mid); > } > else { > dest[i++] = src[q++]; > //c3 += (mid-p); > } > } > while(p<mid) { > dest[i++] = src[p++]; > c3 += (q-mid); > } > while(q<high) { > dest[i++] = src[q++]; > } > System.arraycopy(dest, low, src, low, length); > > return c1+c2+c3; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator