int func(int n){ int i = 0,sum = 0; while(s < n) s += ++i; return i; }

int func(int n){
    int i = 0,sum = 0;
    while(sum < n)
        sum += ++i;
    return i; 
}

求时间复杂度

A. O(logn)    B. O(n^1/2)     C. O(n)     D. O(nlogn)

++i, i = 1,2,3,4,5,···,k。
s = 1+2+3+4+5+···+k = k*(k+1)/2。
即此时 sum = k*(k+1)/2 >= n,(k+1)2 > 2n,得到k > (2n)1/2 - 1。

因此时间复杂度o(根号n)

posted @ 2021-04-09 19:00  世界を変える御宅族  阅读(3800)  评论(0编辑  收藏  举报