计算机系统应用教程网站

网站首页 > 技术文章 正文

算法001:O(1)时间复杂度的底层原理,什么是时间复杂度?来看

btikc 2024-09-25 15:10:34 技术文章 20 ℃ 0 评论

尺有所短,寸有所长,在人的脑海中是怎么衡量的。

璀璨文明的发展,诞生了针对某个体的计量单位,让人们在认识世界的道路上有据可依。

时间的度量单位:时,分,秒

长度的度量单位:毫米,厘米,米,千米

重量的计量单位:克,斤,千克

力的计量单位,电的计量单位,风的计量单位,亮度的计量单位……

脑海中浮现了,大量的尺度坐标,似乎一切都是可以衡量的。真的是这样吗?

虽然算法,在人类的长河中,诞生时间也就短短几十年,但聪明的工程师们也为它设计了相应的计量单位:时间复杂度、空间复杂度。而至于额外空间复杂度,常数项时间复杂度等,都为不同学者的延伸,为的是更好地对算法优劣做一个评估。

什么是时间复杂度:

对于这个概念,我始终无法很好的理解,今天我大胆地给他下一个全新的定义:完成某一个功能,对数据操作的次数。

如果非要和时间扯上关系的话,因为CPU的依附于单晶硅震动的物理特性,无论CPU发展的多少先进,它始终逃不出它的物理特性,单位时间内震动的次数,HZ。每一次操作都或多或少的由CPU参与进来,参与进来就要耗费时间。

即然所有的操作都需要耗费CPU的时间,那时间的计量单位是不是就可以默认存在的呢?是不是就可以理解为:完成某一个功能,对数据操作的次数。

举例:

现在有一座上,工人们辛苦半年,垒出了一条石阶路,完工那天,为了给工人们结算工资,需要统计出他们一共修切了多少个台阶。

先派了一个稳重的人:告诉他你一次数一个台阶,数完后告诉我一共多少。

又找了一个矫健的年轻人:让他每次数两个台阶,数完后告诉他一共多少。

后来了又找了一位小伙子:让他每次数十个台阶,数完后告诉他一共多少。

好,你们说,谁数的最快,当然是一次数十个台阶的最快了,为什么呢?因为他需要数的次数最少,数的次数少耗费的时间也就相应的短。

好啦,关于数台阶的例子有没有对时间复杂度,有更好的理解呢?

O(1)时间复杂度,内部原理到底是怎样的,为什么会有这种神奇的表现。

首先介绍下什么是O(1)时间复杂度,O(1)时间复杂度指的是,完成某一个数据的查找,与数据量没有关系 ,与查找的数字没有关系,所用的时间是一样的。

这个是不是更难理解了?不急,往下看

假如有很多出租车,每跑一公里路消耗1升油,一天下来,假如想知道某个司机跑了多少路程。你会怎么算?难道一个一个地去看他们车上的计程计吗?估计没人那么笨吧,直接看他消耗了多少油,就可以计算出来了吧。

思路不要断哦,继续往下走:

在电脑中,假如我们要查找一个数据在数组中存放的位置,我只需要告诉你当前指针的位置在哪里,之后告诉你偏移量是多少,你就可以想也不想的就可以去那个位置找到那个数字了。是不是O(1)的时间复杂度引出来了,当前地址+偏移量直接找到所需要的数据。

和当前有多少数,当前的位置没有关系 ,这就是O(1)的思想。

怎么样,不知道大家有没有理解呢?如果还有什么疑问欢迎留言哦。

想要轻松地学好计算机相关知识,快来程序猿充电站吧,我在这里等你。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表