有人可以向我解释为什么插入排序的最坏情况是O(n ^ 2)?

时间:2014-01-19 00:53:22

标签: algorithm sorting big-o insertion-sort

当找到插入排序的最坏情况分析时,有人可以逐步解释我们如何获得O(N ^ 2)吗?我正在阅读Cormen Intro to Algorithms一书的解释,但这种解释有点令人困惑。

2 个答案:

答案 0 :(得分:6)

简而言之,最差情况是指您的列表与您需要的顺序完全相反。在那种情况下:

  • 对于第一项,当然是进行0次比较。
  • 对于第二项,您将其与第一项进行比较,发现它们不在正确的位置;你做了1次比较。
  • 对于第三个,你将它与两者进行比较,并发现第三个必须到达顶部。你进行了2次比较。
  • 这继续;对于每个后续值,您进行一次比较。
  • 最后,对于 n 项,您进行 n - 1次比较。

如果你将最坏情况下的的比较数加起来,你会发现它是0 + 1 + 2 + ... + n-1,等于(n^2 - n) / 2的比较最坏的情况,即O(n ^ 2)。 (确定复杂性的部分是当我们考虑大n时,在这种情况下,n ^ 2项占主导地位)

答案 1 :(得分:0)

插入排序在几乎排序的输入上快速工作,因此要进行最坏情况分析,您可以使用数字按降序排列。 好像数字按降序排列,那么你需要在第i次迭代中移动(i-1)个数,因此T(n) = sum(i-1) for i in range(1,n) = n*(n-1)/2 = O(n^2)