大家好我试图计算这个函数的时间复杂度,但我不能真正理解如何计算是个“for循环”的复杂性如何计算此功能的时间复杂度?
01 int* f(int a[], int n) {
02 int i = 1;
03 int *s;
04 s = calloc(n, sizeof(int));
05 while (i < n) {
06 for (j=0; j < i; j++)
07 s[i] = s[i] + a[j];
08 i = i*2;
09 }
10 return s;
11 }
行使有关要求的时间复杂度维数组的“N”
我不认为线02,03,04是一个大问题,因为他们应该有一个O(1)复杂
while循环,如果我撇开“ for循环“一会儿,因为每次时间复杂度应为2^k<n --> k= log_2(n)
时,”i“乘以2
但是for循环呢?它应该被执行“我”倍,但我怎么能表达这个关于“n”?
P.S:我如何写数学符号,我不能在编辑器中
在两地:) –