【发布时间】:2010-10-31 22:52:37
【问题描述】:
AllDistinct(a1 , . . . , an )
if (n = 1)
return True
for i := n down to 2
begin
if (LinearSearch(a1 , . . . , ai−1 ; ai ) != 0)
return False
end
return True
对 AllDistinct 的运行时间给出一个大 O 界限。要获得完整的信用,您必须出示 工作或简要解释你的答案。
所以根据这个问题的解决方案,这个问题的实际答案是 O(n^2)。但是,由于 BigO 是最坏情况下的运行时间,我可以回答 O(n^100000) 并侥幸逃脱吗?他们没有办法为此拿分,因为它在技术上是正确的答案,对吧?虽然在这个算法中更有用的 O(n^2) 是显而易见的,但我问是因为我们可能在即将到来的考试中有一个更难的算法,并且如果我无法弄清楚“紧密”的界限,我可以弥补一些非常大的值,它应该仍然是正确的,对吧?
【问题讨论】:
-
仅仅因为一个答案在技术上是正确的并不意味着它是好的工作或有用的。更多的助教和教授根据后两个而不是第一个标准评分。如果这表明您的思维过程或个性,那么听起来您应该退出 CS 课程并进入法学院。
-
我给出了我的推理,没必要成为一个混蛋..
-
不要试图成为一个混蛋(也许这很自然?)。这实际上非常值得考虑。此外,我的一位教授实际上每次在决赛中看到“我不知道”字样时都会给一个人 +5 分,因为他厌倦了试图通过 BS 闯关的人。教授(和助教)也是人。
-
我只是说如果事实证明我不知道,我宁愿写 O(n^n) 或 O(n!) 而不是我不知道..即兴创作没什么错。 .
-
大家好,SO 是为了互相帮助,而不是为了侮辱。
标签: algorithm big-o pseudocode performance