【问题标题】:Time complexity : Insertion sort with unique key时间复杂度:具有唯一键的插入排序
【发布时间】:2012-04-28 07:47:03
【问题描述】:

我有一个包含 30 个元素的随机有序数组,只有 3 个不同的键(TRUEFALSENULL),我想使用插入排序对其进行排序。时间复杂度是多少?假设最坏情况是 O(n2) 还是假设最好情况是 O(n),因为只有 3 个不同的键?

【问题讨论】:

    标签: sorting data-structures time-complexity


    【解决方案1】:

    n 指的是数组的大小,而不是数组的可能元素。因此,复杂度是相同的:

    • 最坏情况:O(n2)
    • 最佳情况:O(n)
    • 平均情况:O(n2)

    拥有 3 个不同的元素将减少您在“插入”阶段必须检查的元素数量,但只是一个常数因子。这不会改变渐近运行时间。

    例如,在一般情况下,插入检查不是检查 n 个元素,而是检查 n/3 元素。这更好,但不是渐近的。

    【讨论】:

    • 值得注意的是平均情况也是O(n^2)。
    • 因为它是随机排序的数组,所以时间复杂度应该是最坏情况下的复杂度。但是假设只有 3 个不同的键并且顺序对于相同的键无关紧要,时间复杂度会改变吗?
    • 在最坏的情况下,你仍然需要做 ~ n^2 在最坏的情况下通过数组。拥有 3 个不同的元素会减少您检查的元素数量,但不会渐近。
    • 一个快速的问题:如果数组中的所有键都是唯一的,而不是 3 个不同的键,那么插入排序的时间复杂度是多少?会是 O(n) 吗?
    • 是的。回想一下,插入排序的最佳情况是当数组已经排序时。如果数组中只有一个元素,则可以认为它已排序。因此这是插入排序的最佳情况,所以它是 O(n)。
    猜你喜欢
    • 2021-05-30
    • 2013-11-18
    • 2011-09-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2021-03-05
    • 2020-04-01
    相关资源
    最近更新 更多