首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非递归算法的效率分析

非递归算法的效率分析
EN

Stack Overflow用户
提问于 2017-01-31 04:35:57
回答 1查看 4K关注 0票数 1

我试图分析一个算法,用5个步骤来估计它的时间效率。

五个步骤是:

  1. 确定表示输入大小的参数n。
  2. 识别算法的基本操作。
  3. 确定n大小输入的最坏、平均和最佳情况。
  4. 对C(n)反射算法的循环结构进行求和。
  5. 简化求和。

算法是:

代码语言:javascript
复制
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

我解决这个问题的方法是:

  1. 因为我只决定输入的大小,所以我选择了6。
  2. 我说算法的基本操作是比较Ai = Aj。
  3. 最佳情况:n= 1。最坏情况= 6。平均情况= 3。
  4. 总结:

  1. 求和将简化为n^2。

我做得对吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-02 10:19:03

  1. 问题大小?N
  2. 基本操作?如果-测试
  3. 最坏的和最好的情况是不同的。
代码语言:javascript
复制
- The best case is when the first two elements are equal then Θ(n)
代码语言:javascript
复制
- The worst case is if array elements are unique then all sequences of the for loops are executed
  1. 金额:
代码语言:javascript
复制
- Cworst(n) = ∑i=0n-2∑j=i+1n-1 1
  1. 索洛夫
代码语言:javascript
复制
- Cworst(n) = ∑i=0n-2[(n-1) - (i+1) + 1] = ∑i=0n-2[n-1- i] = ∑k=n-11k where k = n - i -1
代码语言:javascript
复制
- Cworst(n) = ∑k=1n-1k = (n-1)(n-1+1)/2 = n(n-1)/2 ε Θ(n2)

注意:对于唯一的数组,有一个最小的n(n-1)/2比较。这有必要吗,有更好的算法吗?

是的,我们可以提前排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41949704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档