首先介绍归并排序,它是指对一个数组,划分为两个。对两个数组分别排序,两个数组排序好后合并。
合并的过程为:从两个数组取第一个数,下标i,j,比较,数值比较小的复制到一个辅助数组中,然后下标++即可。如果有一个数组提前结束,把另外一个数组复制到辅助数组中。然后把辅助数组复制给原数组即完成排序。通过递归,很容易实现。
利用归并排序求逆序对该怎么求呢?
已经排序好的数组逆序对为0(废话)
两个数组归并,如果左数组中的元素a[i]大于右数组a[j],归并数组则的逆序对+mid-i+1即可(a[i]右面的左数组元素都大于a[j])
这样累加即可
题目描述
-
总时间限制:
- 500ms 内存限制:
- 65536kB