算法分析相关概念
算法分析相关概念
算法的时间复杂度
时间复杂度的分析注意事项
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行时,效率均不相同。所以,精确度算法的执行时间没有太大意义,所以我们往往只关注算法的时间开销相对于问题规模变化的趋势,也就是时间复杂度。
时间复杂度的算法
算法(或程序)中基本操作(或语句)重复执行的次数的总和。
设n为求解问题的规模,基本操作(或语句)执行次数总和称为语句频度,记作f(n)。
执行下面的步骤:
- 去掉f(n)中的所有加法常数。
- 只保留最高阶项。
得出时间复杂度记作O(f(n))。
例1:
{
int a;
scanf("%d",&a);
a++;
printf("%d",a);
}
上述的算法中,先定义了一个int类型的a,然后通过输入给a进行赋值,然后进行a+1,最后将a输出。以上每条语句都只进行了一遍,所以语句的频度为:f(n)=f(1)=3。时间复杂度就为:O(f(n))=O(3)=O(1)。O(1)称为常量阶/常量数量级。
例2:
void sum(int a[],int n){
int s=0,i; //1次
for(i=0;i<n;i++) //n次
s+=a[i]; //n次
printf("%d",s); //1次
}
上述的算法中,先定义了一个int类型的s,然后进行了n次的循环,循环里面是对数组a里元素的求和,最后将s输出。其中部分语句进行了n次,所以语句的频度为:f(n)=1+n+n+1。时间复杂度就为:O(f(n))=O(2n+2)=O(n)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗