使用Merge Sort(归并排序)统计数组逆序对计数偏大问题排查
逆序对统计错误原因
核心问题出在merge方法的逆序对计数逻辑,错误代码行如下:
count += mid-1;
正确写法应为:
count += mid - i;
逻辑说明
当右子数组的当前元素list[j]小于左子数组的当前元素list[i]时,左子数组中从下标i到mid-1的所有元素,都和list[j]形成逆序对,总计数量为 (mid - 1 - i + 1) = mid - i。
原代码中固定累加mid-1,每次计数都远大于实际逆序对数量,因此最终统计结果会远高于真实值。
内容的提问来源于stack exchange,提问作者milkdose
相关产品推荐
相关产品推荐

