在写代码有些时候我们通常是怎样衡量算法的优劣之分的呢!有些人说是代码的多少、还有些人说是时间的长短、还有些人说是代码的难度。其实我一开始也是这么想是想着是代码的长短。其实不然,数据结构的时间复杂度就是衡量效率的标准。所谓的时间复杂度简单来说就是代码在运行时候执行的时间长短。如果你设计的代码时间复杂度大那么代码运行的时间长,反之亦然。
时间复杂度的计算方法有很多种,这里我只是把自己的理解计算。废话不多说上代码。
int main(){
for(int i =0;i<100;i++){
printf("%d",i);
}
return 0;
}
以上是一个C语言的代码,这里的时间复杂度就是O(1)。(注时间复杂度的符号为“O”)。这段代码中并没有什么未知的变量所以时间复制度为O(1)。实际上就是T=100,在没有未知变量的情况下常数的复杂度都是O(1)。再看看下列代码。
int main(){
for (int i ;i<n;i++){
printf("%d",i);
}
return 0;
}
这里我并没有设置n的次数,也就是说不明白具体循环的次数。所以时间复杂度为T(n)=n也就是n可以是百万级别的也可以说是亿万级别的。 (注:上述的代码只是一个说明并不能运行)
再看一个更难的
int recusion(int* num,int* n){
for (int i ; i<num;i++){
n--;
}
if(n==0){