Привет всем Я пытался вычислить время сложности этой функции, но я не могу понять, как вычислить сложность этого «для цикла»Как рассчитать временную сложность этой функции?
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 }
упражнения просит временную сложность по отношению к измерение «п» из массива
Я не думаю, что линии 02,03,04 являются большой проблемой, потому что они должны иметь O (1) сложность
для цикла в то время как, если я оставить в стороне " для цикла "на мгновение, так как« i »умножается на два каждый раз, когда временная сложность должна быть 2^k<n --> k= log_2(n)
Но как насчет цикла for? он должен выполняться «i» раз, но как я могу выразить это по отношению к «n»?
P.S: как я пишу математические символы, я не могу найти что-либо в редакторе
благодаря как :) –