《数据结构》到底什么是时间复杂度?给了代码怎么计算复杂度?

您所在的位置:网站首页 ≥这个符号是什么意思 《数据结构》到底什么是时间复杂度?给了代码怎么计算复杂度?

《数据结构》到底什么是时间复杂度?给了代码怎么计算复杂度?

2023-06-28 13:37| 来源: 网络整理| 查看: 265

什么是时间复杂度?(个人理解,有基础的可以直接跳到后面的计算部分)

刚学习时间复杂度的小伙伴可能对这个是似懂非懂,用大白话来说就是,你这个程序跑起来,我不管你在天河一号还是在你的笔记本上,到底需要花费的时间是一个什么样的数量级。比如O(n²)表示就是运行的时间是n²级别的,当n无穷大时,运行时间就是按n²的规模进行增长的。

同时要注意,即便我们的程序有一万行代码,如果不存在循环,每一行代码是独立运行的,他的时间复杂度也只有O(1),就算你输入了无限多个数据,你也只需要处理这一万行代码就够了,所以运行时间是常数级别的,远不如三行代码的for循环大。

可能又有的小伙伴要问了,那我在我笔记本是跑一万行代码,肯定没我的for循环执行时间快啊?我刚开始学的时候,也是有这个疑问的,其实这是因为,我们个人学习的时候跑的代码,数据量很小,几百几千的都已经算很大了,但是在科技这么厉害的今天,我们手上的个人电脑已经能够在很短的时间里处理完这些数据,以至于我们感觉不到差异,但是当我们就业以后,可能我们的代码需要应用到数以万计的数据量中,此时你就会发现,不同的时间复杂度带来的运行时间差别有多大了。因此给出结论:时间复杂度≠时间

显然,不同程序的时间复杂度也不是相同的,取决于代码逻辑,那么在实际做题中,该怎么计算我们的代码时间复杂度呢?

首先,题目所给代码无非两种情况,一种是只有一层循环,如while循环。另一种就是多层循环,如for多层嵌套。对于这两种情况分别有不同步骤,归根结底就一句话:找到每次循环的运行次数并累加。

(看着很多其实是,学会演草纸上迅速秒杀)

单层循环(四步解决)

1.找到跳出循环的条件

2.设循环次数为a

3.当a=1、2、3...时,只看使循环变量i变化的语句分别算出i的值,找到规律后写出a与变量i的关系式

4.带入循环条件解出a的值,O(a)即为时间复杂度

例1:

求下列代码的运行时间复杂度

i=1;k=0;

while(i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3