数据结构与算法之时间复杂度“一”(小白请过来)

                ***数据结构与算法之时间复杂度“一”***

以T(n)线性阶复杂度为例引入:(小白都能看懂!因为我就是小白)
//算法1--逐步递增型爱你(例题采集于王道论坛)
#include <iostream>
#include <cstdio>
using namespace std;
void LoveYou(int n) {//n为问题规模
步数 1:int i = 1;
步数 2:while (i <= n)
{
步数 3: i++;//i的程度每次+1;
步数 4: printf("I Love You %d\n", i);
}
步数 5: printf("I Love You More Than %d\nTimes",n);
}
int main()
{
int n=0;
cin >> n;
LoveYou(n);
return 0;
}</cstdio></iostream>

以void函数为例分析,
语句频率:
1: --1次
2: --3001次(循环判断进行n+1次后跳出)
3、4: --3000次
5: --1次;

so: 时间复杂度表示:T(n)=1+3001+2*3000+1 ;即T(n)=3n+3
(时间开销与问题规模n的关系)

那么问题来了,当出现如递归算法这样的疯狂压栈操作(有兴趣的朋友不妨查找有关递归的时间空间复杂度及其底层数据处理方式)或其他更大规模开销时,该如何计算时间复杂度呢?

例如:
1. T(n)=图片说明
2. T(n)=图片说明
3. T(n)=图片说明
图片说明
图片说明
图片说明 图片说明 ......当n接近无穷大时,可相对忽略低阶“小数“。

这时候我们引入大O表示法表示“同阶同等数量级”。即:当n趋向于无穷大时,二者之比为常数:T(n)=O(N)
其中N为n的不同阶任意多项式;
图片说明
1、大O(n)的加法规则:多项式相加,只保留最高阶的项,且其系数变为 1(吸收律,吸收低阶的项式)
如: O(n^2)+O(n)结果为O(n^2)。
2、大O(n)的乘法规则:多项相乘,都保留
如:O(n)*O(n^2)结果为O(n^3)。

常见的时间复杂度按数量级递增排列依次为:
下面转载https://www.cnblogs.com/lfxiao/p/10695875.html

图片说明

当你的算法能够以阶级递减复杂度时,那么恭喜你,你是伟大的创造师!
加油!

全部评论
O(log2n ) i=1; //1 while (i<=n) i=i*2; //2 解: 语句1的频度是1, 设语句2的频度是f(n), 则:2f(n)<=n; f(n)<=log2n 取最大值f(n)= log2n, T(n)=O(log2n ) 如有大佬路过还请留步,请问这个为何是对数级的时间复杂度
点赞 回复 分享
发布于 2021-01-29 09:56

相关推荐

迷茫的大四🐶:你这个拿去投央国企吧,投私企包过不了的
点赞 评论 收藏
分享
想干测开的tomca...:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务