算法时间复杂度定义
是关于问题规模的函数,进而分析随的变化情况并确定的数量。算法的时间复杂度。也就是算法的时间量度,记做:。它表示随问题规模的增大,算法执行时间的增长率和的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。 其中是问题规模的某个函数。
随问题规模增加的变化趋势。一般情况下,随着的增大,增长最慢的算法为最优算法。
- 用常数 1 取代运行时间中的所有加法常数。
- 再修改后的运行次数函数中,只保留最高阶项。
- 如果最高阶项存在且不是 1 ,则去除与这个项相乘的常数。
时间复杂度
int a=1,b=3,sum=0;//执行1次 sum=a+b;//执行1次 cout<<"sum="<<sum<<endl;//执行1次
时间复杂度
for(int i = 0; i < n; i++)//执行n次 { cout<<i<<endl; }
时间复杂度
for(int i = 0; i < n; i++)//执行n^2次 { for(int j = 0; j < n; j++) { cout<<i<<endl; } }
,则层嵌套的时间复杂度为。
时间复杂度
int i=1; while(i<n) { i=i*2; }
时结束循环。所以总共执行了次,所以其时间复杂度为。
最坏情况
平均情况
递归算法的时间复杂度求解
和是常数,是渐近正函数。
- 若对某个常数,有,则
- 若,则
- 若对某个常数,有,且对于某个常数和所有足够大的有,则
,其中,。当,有。符合第一种情况所以。