我正在尝试分析一种算法,使用5个步骤估算其时间效率。
五个步骤是:
算法为:
Algorithm UniqueElements (A[0 … n-1)
– //Check whether all the elements in a given array are
distinct
– //Input: an array A[0 … n]
– //Output: returns “true” if all the elements in A are
distinct and “false” otherwise
for i ← 0 to n - 2 do
for j ← i + 1 to n - 1 do
– If A[i] = A[j] return false
return true
我的解决方法是:
答案 0 :(得分:0)
我相信这应该解决如下:
决定参数n。 我认为这是要求等式中的'n'。所以这里,它是输入数组的长度。
我同意基本操作。比较A [i] == A [j]。
由于如果两个元素相同,此算法会提前中断,那么我们知道最坏情况是所有元素都不同的时候。在这种情况下,我们有两个循环 - 一个嵌套在另一个循环中 - 每个循环与输入长度(n)线性相关。
这意味着我们的最坏情况受O(n ^ 2)的限制。
我们的平均病例是通过将所有可能的结果相加并除以所有结果来计算的。这看起来非常类似于C(n)的总结。给出长度为n的输入运行所需的时间总和是:
maths to calculate average time
这就是 Theta(n ^ 2)
最后,最佳案例时间。这几乎是微不足道的< \ i>。这里最好的情况是数组中的第一个和第二个项目是相同的。这是常数时间,因此最佳情况是theta(1)。
对于这部分,再次参考链接的数学。
我同意你的简化! n ^ 2是正确的。
希望这有帮助!