确定该函数的 Big-O 增长率
Determining the Big-O growth rate of this function
我无法确定如何确定这些类型函数的增长率。
void A(int n){
int i=1, s=1;
while(s<=n){
i++;
s=s+i;
cout<<"hi";
}
}
已知这是 O(sqrt(n)),但我不知道如何计算?
如果您查看每次迭代中 s 的值,您会发现它变为 1、3、6、10、15 等。这些数字称为三角数,是 k 形式的数字(k+1)/2(通常将其证明为归纳练习。)
只要 s 超过 n,循环就会停止 运行。在第 k 次迭代中,s 的值为 k(k+1)/2,因此您可以通过在 k(k+1)/2 中求解 k 来计算迭代次数。尝试这样做,看看你发现了什么。这能解释平方根吗?
我无法确定如何确定这些类型函数的增长率。
void A(int n){
int i=1, s=1;
while(s<=n){
i++;
s=s+i;
cout<<"hi";
}
}
已知这是 O(sqrt(n)),但我不知道如何计算?
如果您查看每次迭代中 s 的值,您会发现它变为 1、3、6、10、15 等。这些数字称为三角数,是 k 形式的数字(k+1)/2(通常将其证明为归纳练习。)
只要 s 超过 n,循环就会停止 运行。在第 k 次迭代中,s 的值为 k(k+1)/2,因此您可以通过在 k(k+1)/2 中求解 k 来计算迭代次数。尝试这样做,看看你发现了什么。这能解释平方根吗?