【问题标题】:Recurrence of binary search(time of inserting element into array)二分查找的重复(将元素插入数组的时间)
【发布时间】:2018-10-13 12:08:34
【问题描述】:

我们可以将插入排序表示为递归过程,如下所示。在 排序。为了对 A[1..n] 进行排序,我们递归地对 A[1..n−1] 进行排序 然后将 A[n] 插入已排序的数组 A[1..n−1]。写一个 此递归版本插入的运行时间的重复 排序。

很明显,对数组进行排序需要 T(n-1) 次(因为我们不需要对最后一个元素进行排序)。但我不明白为什么将元素插入排序数组需要 O(n)。

假设我们有一个数组:A = 41;52;26;38;57;9;49. 最坏的情况是,我们必须遍历整个数组才能在数组开头插入最后一个元素 n。但我认为这需要 O(n-1) 时间,因为我们遍历数组中的 n-1 个元素。

你能解释一下我的错误和正确答案的逻辑吗?

【问题讨论】:

    标签: arrays sorting


    【解决方案1】:

    没有像 O(n-1) 这样的东西。 常量在大 O 表示法中被忽略。所以它的O(n)。 您需要清除算法分析的基础知识。

    你可以参考这里

    https://www.geeksforgeeks.org/fundamentals-of-algorithms/#AnalysisofAlgorithms

    【讨论】:

    • 感谢您的回答!还有一个问题:我们用来定义排序数组时间的 T(n) 和用来定义插入时间的大 O 表示法有什么区别?
    • 我理解了这些定义,但我不明白为什么它们可以用在一个等式中,就像我的问题一样?
    • 这是因为 T(n-1) 是固定的,而 O(n) 可以变化(最坏和最好的情况?)
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2011-06-06
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2017-08-18
    • 1970-01-01
    相关资源
    最近更新 更多