大家好我試圖計算這個函數的時間複雜度,但我不能真正理解如何計算是個「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:我如何寫數學符號,我不能在編輯器中
在兩地:) –