Algorithm 在大Oh记数法中,最坏的运行时间是什么
对于下面的函数,在大Oh符号中最坏的运行时间是多少?有人能解释一下原因吗?谢谢Algorithm 在大Oh记数法中,最坏的运行时间是什么,algorithm,time-complexity,Algorithm,Time Complexity,对于下面的函数,在大Oh符号中最坏的运行时间是多少?有人能解释一下原因吗?谢谢 test{ int counter = 0; for int(i=0; i<5000;++i){ counter += i; for(j=0;j<n;++j){ ... } for(k=0;k<i;++k){ ... } } } 测试{ int计
test{
int counter = 0;
for int(i=0; i<5000;++i){
counter += i;
for(j=0;j<n;++j){
...
}
for(k=0;k<i;++k){
...
}
}
}
测试{
int计数器=0;
for int(i=0;i5000是一个常数,所以它并不重要。唯一重要的是for循环中有n,所以这是O(n)。Big-O表示法告诉您,算法的缩放速度与函数相同或较慢
- O(N)意味着,如果输入的数据是原来的10倍,则所需的时间将是原来的10倍或更少
- O(N^2)表示数据多10倍时,其长度等于或小于100倍
你的输入是n
,i
在一个costant循环上。因此你的复杂性是O(n),因为n
在一个for循环中,所以它是线性扩展的,除非你在另一个循环的某处使用n
你可能已经注意到“或更少”,你可能会说所有的O(N)算法因此也是O(N^2)或者更糟的是,这在技术上是正确的,但是没有帮助。这就是为什么你会选择最快的大O表示法来表示一个好的近似值。大O表示法谈论与n成比例的运行时间。在这里,除了一个内有n的循环外,所有循环重复相同的次数。因此,只有内部循环的运行时间发生变化当n改变时为s,因此为O(n)。这是有意义的。谢谢。因为Big-O是上界,所以函数也是O(n^2),但它是有意义的,因为答案应该是函数最接近的时间复杂度。