一、时间复杂度
运行代码的机器不同,同一个代码,运行的速度(时间)也不同,比如电脑和单片机,为了避免差异,我们只考虑同一个代码的执行次数,由此代表其时间复杂度。
一般只比较数量级大小,比如O(n)和O(n²)
抽取循环中的一行代码即可。
while(i<n)
{
i++;
do_somthing();
}
//则这个T(n) = O(n)
while(i<n)
{
i++;
j = 0;
while(j<m)
{
j++;
do_something();
}
}
//多层循环,至关注最深层里面的程序执行情况
//T(n) = O(n²)
while(i<n)
{
i *= 2;
do_something();
}
//这里循环结束条件是2的x次方>n时,对x求解执行次数
//T(n) = O(log2 n)
//对于遍历查找循环,其实际结果具有随机性
for(int i=0;i<n;i++)
{
if(arr[i] == check_num )
break;
}
//最好的结果时间复杂度T(n) = O(1),即第一个就查找匹配退出循环
//最坏的结果时间复杂度T(n) = O(n)