gpt4 book ai didi

algorithm - 这种愚蠢的最坏情况下的时间复杂度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:29:54 25 4
gpt4 key购买 nike

代码如下:

for (int i = 1; i < N; i++) {
if (a[i] < a[i-1]) {
swap(i, i-1);
i = 0;
}
}

在尝试了一些事情之后,我认为最坏的情况是输入数组按降序排列。然后看起来比较将是最大的,因此我们将只考虑比较。那么它似乎是总和,即... {1+2+3+...+(n-1)}+{1+2+3+...+(n-2 )}+{1+2+3+...+(n-3)}+ .... + 1 如果是的话 O(n) 是多少?

如果我不在正确的道路上,有人可以指出 O(n) 是什么以及它是如何推导出来的吗?干杯!

最佳答案

对于初学者来说,总结

(1 + 2 + 3 + ... + n) + (1 + 2 + 3 + ... + n - 1) + ... + 1

实际上不是 O(n)。相反,它是 O(n3)。你可以看到这一点,因为总和 1 + 2 + ... + n = O(n2,并且每个都有 n 个副本。你可以更恰本地证明这个总和是 Θ( n3) 通过查看这些项的前 n/2。这些项中的每一项至少为 1 + 2 + 3 + ... + n/2 = Θ(n2 ),所以有 n/2 个 Θ(n2) 的副本,给出了 Θ(n3) 的紧界。

我们可以将此算法的总运行时间上限设置为 O(n3),注意每次交换都会将数组中的反转次数减少一个(反转 是一对不合适的元素)。数组中最多可以有 O(n2) 次反转,而排序数组中没有反转(你知道为什么吗?),所以最多有 O(n2 ) 遍历数组,每个最多需要 O(n) 的工作。这共同给出了 O(n3) 的界限。

因此,您确定的 Θ(n3) 最坏情况运行时间是渐近紧的,因此该算法的运行时间为 O(n3) 并且具有最坏情况运行时 Θ(n3).

希望这对您有所帮助!

关于algorithm - 这种愚蠢的最坏情况下的时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com