标签:情况下 使用 ++ 常量 str view https mos 软件工程
效率目标
算法效率常用CPU的使用时间表示
算法分析
算法分析是从效率的角度对算法进行分类
不管问题是大是小,运行赋值语句和if语句一次,其复杂度就为 O(1)。
渐进复杂度
渐进复杂度称为算法的阶次
时间复杂度分析
1.假设某个循环体复杂度为O(1),那么下面循环的时间复杂度为 O(n)
for(int count = 0;count<n;count++)
{
//*复杂度为O(1)的步骤系列
}
某个循环结构以线性方式循环n次,且该循环的复杂度为O(1),那么循环的时间复杂度为 O(n)
2.如果循环的复杂程度是对数级的
count = 1;
while(count < n)
{
count *=2;
//复杂度为O(1)的步骤系列
}
3.嵌套循环的复杂度分析循环出现嵌套时,循环的复杂度等于内层循环的复杂度乘以外层循环的复杂度
for (int count = 0; count < n; count++)
for (int count2 = 0; count2 < n; count2++)
{
//复杂度为O(1)步骤系列
}
时间复杂度的计算规则
1) 加法规则
T(n,m) = T1(n) + T2(n) = O (max ( f(n), g(m) )
2) 乘法规则
T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))
3) 一个特例(问题规模为常量的时间复杂度)
在大O表示法里面有一个特例,如果T1(n) = O(c), c是一个与n无关的任意常数,T2(n) = O ( f(n) ) 则有T(n) = T1(n) * T2(n) = O ( c*f(n) ) = O( f(n) )。也就是说,在大O表示法中,任何非0正常数都属于同一数量级,记为O(1)。
for(int count = 0 ; count < n ; count++)
for(int count2 = 0 ; count2 < n ; count2 = count2 + 2)
{
System.out.println(count,count2);
}
}
属于嵌套循环,内循环需要的次数:n/2,外循环需要的次数n。故:增长函数为F(n)=(n^2)/2,阶次为O(n^2)
for(int count = 0 ; count < n ; count++)
for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
{
System.out.println(count,count2);
}
}
属于嵌套循环,内循环需要的次数:log?(n-1),外循环需要的次数n。故:增长函数为F(n)=n·log?(n-1),阶次为O(n·log2(n))
20172324 2018-2019-1 《程序设计与数据结构》第一周学习总结
标签:情况下 使用 ++ 常量 str view https mos 软件工程
原文地址:https://www.cnblogs.com/amberR/p/9615643.html