基于归并排序的逆序对数统计
2013-03-04 21:45
281 查看
int a[MAXN]; int N; int cnt = 0; void merge(int l,int m,int r); void merge_sort(int l,int r) { if ( l < r ) { int m = ( l + r ) >> 1; merge_sort(l,m); merge_sort(m + 1,r); merge(l,m,r); } } void merge(int l,int m,int r) { int n1 = m - l + 1; int n2 = r - m; int* A = (int *)malloc((n1 + 1) * sizeof(int)); int* B = (int *)malloc((n2 + 1) * sizeof(int)); A[n1] = B[n2] = 0x7fffffff; int i,j,k; for (i = 0, k = l; i < n1; i++,k++) A[i] = a[k]; for (j = 0, k = m +1; j < n2; j++,k++) B[j] = a[k]; i = j = 0; for ( k = l; k <= r; k++) { if ( A[i] <= B[j] ) { a[k] = A[i]; i++; } else { a[k] = B[j]; cnt += n1 - i; j++; } } free(A); free(B); }
相关文章推荐
- 归并排序求逆序对数)
- 求逆序对数的NLogN解法:归并排序、树状数组和线段树
- ACM:归并排序,以及利用归并排序思想求解逆序对数!
- hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
- 归并排序求逆序对数
- 紫书第八章-----高效算法设计(归并排序求逆序对数)
- 归并排序 霍纳规则(法则) 统计逆序对
- 归并排序及利用归并排序求逆序对数
- 求逆序对数总结 & 归并排序
- POJ 2299 归并排序 求逆序对数
- 归并排序求逆序对数
- 边归并排序,边统计逆序对数
- 51nod1107(逆序对数&归并排序)
- POJ 2299 Ultra-QuickSort (归并排序求逆序对数)
- hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
- POJ2299——归并排序求逆序对数
- hash一下 + 归并排序计算逆序对数
- 【基于归并排序的分治】统计问题
- POJ 2299 Ultra-QuickSort 求逆序对数(归并排序,树状数组)
- POJ 2299 Ultra-QuickSort(归并排序求逆序对数)