在Bubble Sort中执行的平均交换次数

时间:2017-07-26 09:15:45

标签: algorithm statistics computer-science number-theory computer-science-theory

我现在遇到了这个问题: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3155 当给定数据是第一个n(随机列出1到n个)自然数的混洗顺序时,问题要求计算冒泡排序算法执行的平均交换次数。

所以,我想:

  1. 最大可能交换次数= n(n-1)/ 2。 (当它们按降序排列时。)
  2. 最小可能掉期= 0。 (当它们按升序排列时。)
  3. 因此,该分布的模式是(0 + n(n-1)/ 2)/ 2 = n(n-1)/ 4。 但是,事实证明这就是答案。 我不明白为什么模式与平均值一致。

2 个答案:

答案 0 :(得分:2)

由于要排序的输入可以是具有相同发生概率的任何随机数,因此分布是对称的。

对称分布的一个特性是它们的均值,中位数和模式重合,这就是平均值和模式相同的原因。

答案 1 :(得分:1)

每次交换都会将数组中inversions的数量减少一个。

有序数组没有反转,因此交换次数等于初始数组中的反转次数。因此,我们需要计算混洗数组中的平均反转次数。

一对索引iji< j,恰好是一半混乱数组的反转。有n * (n-1) / 2个这样的对,因此我们平均有n * (n-1) / 4个反转。