一、算法效率
- 算法效率分为时间效率(时间复杂度)和空间效率(空间复杂度)
- 用O来表示时间复杂度和空间复杂度
1、时间复杂度:衡量一个算法的运行速度
(1)计算算法中的基本操作的执行次数
(2)推导大O阶法方法:
①去掉系数,所有系数按1处理
②在修改后的运行次数函数中,只保留最高阶项
2、空间复杂度:衡量一个算法所需要的额外空间
3、有些算法的时间复杂度存在最好、最坏和平均情况(一般关注最坏)
(1)最坏情况:任意输入规模的最大运行次数
(2)最好情况:任意输入规模的最小运行次数
(3)平均情况:任意输入规模的期望运行次数
二、计算
1、计算Fun c1的时间复杂度
void fun c1(int N)
{
int count=0;
for(int i=0;i<N;++i)
{
for(int j=0;j<N;++j)
{
++count;
}
}
for(int k=0;k<2*N;++k)
{
++count;
}
int M=10;
while(M--)
{
++count;
}
printf("%d\n",count);
}
分析:第一个for循环操作执行了 N^2 次
第二个for循环操作执行了 2N 次