我现在遇到了这个问题: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3155 当给定数据是第一个n(随机列出1到n个)自然数的混洗顺序时,问题要求计算冒泡排序算法执行的平均交换次数。
所以,我想:
因此,该分布的模式是(0 + n(n-1)/ 2)/ 2 = n(n-1)/ 4。 但是,事实证明这就是答案。 我不明白为什么模式与平均值一致。
答案 0 :(得分:2)
由于要排序的输入可以是具有相同发生概率的任何随机数,因此分布是对称的。
对称分布的一个特性是它们的均值,中位数和模式重合,这就是平均值和模式相同的原因。
答案 1 :(得分:1)
每次交换都会将数组中inversions的数量减少一个。
有序数组没有反转,因此交换次数等于初始数组中的反转次数。因此,我们需要计算混洗数组中的平均反转次数。
一对索引i
,j
,i
< j
,恰好是一半混乱数组的反转。有n * (n-1) / 2
个这样的对,因此我们平均有n * (n-1) / 4
个反转。