例子:
void fun(int n){
int i = 1;
while (i<n){
i = i*2;
}
}
时间复杂度是研究:数据总量n和执行次数y之间的关系
第一轮:i = 1
第二轮:i = 2
第三轮:i = 4
第四轮:i = 8
第五轮:i = 16
…………
第y轮: i = 2^(y-1) = n
2^y = n ————>y = log2n
答:o(logn)
void fun(int n){
int i = 0;
while (i*i*i<n){
i++;
}
}
时间复杂度是研究:数据总量n和执行次数y之间的关系
第一轮:i = 0
第二轮:i = 1
第三轮:i = 2
第四轮:i = 3
第五轮:i = 4
…………
第y轮: i = (y-1)
(y-1)*(y-1)*(y-1) = n
y^3 = n
y = n^1/3
答:O(³√n)
x = 2;
while(x<n/2){
x = x * 2;
}
第一轮:x = 2
第二轮:x = 4
第三轮:x = 8
第四轮:x = 16
第五轮:x = 32
…………
第y轮: x = 2^y
2^y = n——>y = log₂n
答:O(logn)
x = 0;
while (n>(x+1)*(x+1)){
x = x + 1;
}
第一轮:x = 0
第二轮:x = 1
第三轮:x = 2
第四轮:x = 3
第五轮:x = 4
…………
第y轮: x = y - 1
y*y = n——>y^2= n ——>y = √n——O(√n)
答:O(√n)
i=1,k = 0;
while(i<n-1){
k = k+10*i;
i++;
}
第一轮:i = 1
第二轮:i = 2
第三轮:i = 3
第四轮:i = 4
第五轮:i = 5
…………
第y轮: i = y
y = n - 1
答:O(n)