关于时间复杂度
时间复杂度的意义在于可以在不运行的情况下知道哪个算法花费的时间多,哪个算法花费的时间少。
这对于优化代码,评价算法的优劣是很有用的。
1.什么是时间复杂度
在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。
这是一个代表算法输入值的字符串的长度的函数。(以上来自百度百科)
百度百科的看着有点抽象,我个人的理解是:根据与代码语句的执行次数而成正比变化的函数。假设每条语句执行消耗的时间一致,
那么执行次数越多,消耗的时间自然就多,而时间复杂度自然就高;
2.时间复杂度的写法(格式)
时间复杂度一般用大写O表示;
常数级时间复杂度记为:O(1);
线性级:O(n),
平方级:O(n²)
等;
基本就是O()括号里放对应的n的表达式;
我对此的理解是:n是可以决定代码执行次数的某种数(变量),f(n)就是执行次数相对与n的变化趋势,O(f(n))就是时间复杂度;
3.计算时间复杂度
时间复杂度只计算量级最大的那条代码语句。
这个我觉得还是可以理解的,低量级的时间复杂度的增长趋势相对与高量级的时间复杂度来说,是可以忽略不计的,
自然就可以省略不计算,反正也不是精确的去计算代码的执行时间。
举个例子:
for(int i=0;i<n;i++)
{
cout<<"075天下第一"<<endl;
for(int j=0;j<n;j++)
{
cout<<"076天下第一"<<endl;
}
}
这段代码中有一个执行了n次的语句和一个执行了n²次的语句,它们的时间复杂度分别是O(n)和O(n²),总执行次数是n+n²,
总的时间复杂度本应该是O(n+n²),但是因为O(n)的量级低于O(n²),所以可以忽略,这段代码的时间复杂度是O(n²);
以上就是一个小白对时间复杂度的理解,如有错误,欢迎指正( ̄▽ ̄)";