数据结构之复杂度计算
数据结构之复杂度计算
1.时间复杂度
举个例子来说:
数学家高斯小时候的事,计算1+2+。。。+100的和,有两种方法,为
第一种:
for(int i=0;i<=100;i++){
sum=sum+i;
}
第二种:
int n=100 sum=0;
sum=(n+1)*n/2;
无疑第一种需要计算100次,复杂
第二种需要计算1次即可,简单。
两种时间复杂度分别为O(1),O(n),括号内的常量只能为1,其他都是n,及n的指数,如O(n^2) , O(n^100)等等。。。
例如
for(int i=0;i<=100;i++){
for(int j=0 ; j<=100;j++){
printf(“hello world”);
}
}
如此嵌套循环一共执行了n*n次,其复杂度为O(n^2)
还有一种情况如:
for(int i=0;i<=100;i++){
for(int j=i ; j<=100;j++){
printf(“hello world”);
}
}
如此嵌套循环一共执行了n*(n+1)/2次,即0.5*n2+0.5n,根据时间复杂度的计算方式,只看最高次的指数,不看其他,其最高次还是2,故其复杂度还为O(n2)
2.空间复杂度
空间复杂度较好理解,其中时间复杂度是执行所需时间,而空间复杂度是所需要的存储的空间,举个例子,如
判断某年是否为闰年:
第一种方法:写个方法,或者说算法,通过计算判断是否为闰年,所需存储空间小,时间慢
第二种方法:存储1~2050共2050个数,事先判断每个数为闰年则为1,不是则为0,判断某年是否为闰年只需要查找该数,查看索引为1还是为0即可,需要的存储空间大,时间快
我是“道祖且长”,一个在互联网苟且偷生的Java程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~