算法复杂度Min和max

时间:2017-03-23 15:01:19

标签: algorithm max time-complexity min

我有一个问题..我有一个算法

procedure summation(A[1...n])
s=0
for i= 1 to n do
     j=min{max{i,A[i],n^3}
     s= s + j
return s

我希望使用渐近符号θ找到此算法的最小和最大输出。 有关如何做到这一点的任何想法? 我必须要看一个算法才能理解它的复杂性?

2 个答案:

答案 0 :(得分:2)

如果您想知道大O符号或时间复杂度有效吗?您可能需要查看以下帖子What is a plain English explanation of "Big O" notation?

对于您展示的伪代码,复杂性为O(n)。是n是数组的长度。 通常,您可以通过查看算法具有多少嵌套循环来确定复杂性。当然,情况并非总是如此,但这可以作为经验法则使用。

在以下示例中:

procedure summation(A[B1[1...n],B2[1...n],...,Bn[1...n]])
s=0
for i= 1 to n do
    for j= 1 to m do
     j=min{max{i,A[i,j],n^3}
     s= s + j
return s

复杂度为O(n m)。 (所有阵列的长度b - > m)

最佳或最差情况

对于您展示的算法,没有最好或更坏的情况。对于同一个数组,它总是运行相同的时间,对运行时间的唯一影响是数组的长度。

可能存在最佳或最差情况的例子如下。 假设您需要在数组中找到特定数字的位置。 如果你的方法是从头到尾通过数组。最好的情况是这个数字在一开始。最糟糕的情况是,如果数字将在最后。

有关更详细的说明,请查看链接。 欢呼声。

答案 1 :(得分:-1)

最佳和最差情况是相同的,因为无论输入如何,算法每次都会以“相同的方式”运行。因此,基于此,我们将使用数学计算算法的时间复杂度:

  

T(n)= 1 + formula(3 + 2)+ 1
  T(n)= 2 + formula 5
  T(n)= 2 + 5 formula 1
  T(n)= 2 + 5(n-1 + 1)
  T(n)= 5n + 2

此总和formula(3 + 2)是由于循环内部有5个不同且可测量的动作:
j = min{max{i,A[i]}, n^3}计为三个操作,因为我们对变量j进行了2次比较和值分配。
s = s + j计为2个操作,因为我们对变量s进行了一次添加和值赋值。

渐近:Θ(n)

我们如何计算Θ(n):
我们看一下5n + 2的结果,然后取出常数使它成为 ñ。然后我们选择n的“最大”变量 其他例子:

  

8n ^ 3 + 5n + 2 - > Θ(N)= N ^ 3
  10logn + n ^ 4 + 7 - > Θ(N)= N ^ 4

更多信息:http://bigocheatsheet.com/