Algorithm 算法复杂度最小和最大

Algorithm 算法复杂度最小和最大,algorithm,max,time-complexity,min,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 我想用渐近符号θ求这个算法的最小和最大输出。 有什么办法吗? 要了解算法的复杂性,我需要看什么?如果你想知道大O符号或时间复杂性的工作原理?你可能想看看下面的帖子 对于您展示的psuedo代码,复杂性是O(n)。WAREn是数组的长度。 通常,您可以通过查看算法有多少嵌

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

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
我想用渐近符号θ求这个算法的最小和最大输出。 有什么办法吗?
要了解算法的复杂性,我需要看什么?

如果你想知道大O符号或时间复杂性的工作原理?你可能想看看下面的帖子

对于您展示的psuedo代码,复杂性是
O(n)
。WARE
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(nm)。(所有阵列的长度b->m)

最佳或最坏情况

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

下面是一个可能是最好或最坏情况的例子。 假设您需要在数组中查找特定数字的位置。 如果您希望方法从头到尾遍历数组。最好的情况是数字在开头。最坏的情况是如果数字在最后

有关更详细的说明,请查看链接。
干杯。

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

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

这个总和(3+2)是由于在循环中我们有5个不同且可测量的动作:
j=min{max{i,A[i]},n^3}
这三个动作,因为我们对变量
j有两个比较和一个赋值
s=s+j
计算为两个动作,因为我们对变量
s
有一个加法和一个赋值

渐近:Θ(n)

我们如何计算Θ(n):
我们看结果是5n+2,我们去掉常数,它就变成了 N然后我们选择“最大”变量n.
其他例子:

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


更多信息:

非常感谢您!!从你的帖子中我几乎了解了一切!!而且链接是如此有用!你是最棒的!谢谢,祝你今天愉快@米克尔,你没问算法的时间复杂度。正确答案如下:是的,但你也帮了我,我非常感激!!:)循环不是(1+1)*n=2n?另外,你能解释一下为什么在第四行是n吗?循环是2(n+1),因为当i变成n+1时,循环会从n开始再运行一次,所以循环会持续1到n+1。发生这种情况时,检查将为false,从而结束循环。第四行是n,因为求和将发生n次。可能重复