网站首页 > 技术文章 正文
尺有所短,寸有所长,在人的脑海中是怎么衡量的。
璀璨文明的发展,诞生了针对某个体的计量单位,让人们在认识世界的道路上有据可依。
时间的度量单位:时,分,秒
长度的度量单位:毫米,厘米,米,千米
重量的计量单位:克,斤,千克
力的计量单位,电的计量单位,风的计量单位,亮度的计量单位……
脑海中浮现了,大量的尺度坐标,似乎一切都是可以衡量的。真的是这样吗?
虽然算法,在人类的长河中,诞生时间也就短短几十年,但聪明的工程师们也为它设计了相应的计量单位:时间复杂度、空间复杂度。而至于额外空间复杂度,常数项时间复杂度等,都为不同学者的延伸,为的是更好地对算法优劣做一个评估。
什么是时间复杂度:
对于这个概念,我始终无法很好的理解,今天我大胆地给他下一个全新的定义:完成某一个功能,对数据操作的次数。
如果非要和时间扯上关系的话,因为CPU的依附于单晶硅震动的物理特性,无论CPU发展的多少先进,它始终逃不出它的物理特性,单位时间内震动的次数,HZ。每一次操作都或多或少的由CPU参与进来,参与进来就要耗费时间。
即然所有的操作都需要耗费CPU的时间,那时间的计量单位是不是就可以默认存在的呢?是不是就可以理解为:完成某一个功能,对数据操作的次数。
举例:
现在有一座上,工人们辛苦半年,垒出了一条石阶路,完工那天,为了给工人们结算工资,需要统计出他们一共修切了多少个台阶。
先派了一个稳重的人:告诉他你一次数一个台阶,数完后告诉我一共多少。
又找了一个矫健的年轻人:让他每次数两个台阶,数完后告诉他一共多少。
后来了又找了一位小伙子:让他每次数十个台阶,数完后告诉他一共多少。
好,你们说,谁数的最快,当然是一次数十个台阶的最快了,为什么呢?因为他需要数的次数最少,数的次数少耗费的时间也就相应的短。
好啦,关于数台阶的例子有没有对时间复杂度,有更好的理解呢?
O(1)时间复杂度,内部原理到底是怎样的,为什么会有这种神奇的表现。
首先介绍下什么是O(1)时间复杂度,O(1)时间复杂度指的是,完成某一个数据的查找,与数据量没有关系 ,与查找的数字没有关系,所用的时间是一样的。
这个是不是更难理解了?不急,往下看
假如有很多出租车,每跑一公里路消耗1升油,一天下来,假如想知道某个司机跑了多少路程。你会怎么算?难道一个一个地去看他们车上的计程计吗?估计没人那么笨吧,直接看他消耗了多少油,就可以计算出来了吧。
思路不要断哦,继续往下走:
在电脑中,假如我们要查找一个数据在数组中存放的位置,我只需要告诉你当前指针的位置在哪里,之后告诉你偏移量是多少,你就可以想也不想的就可以去那个位置找到那个数字了。是不是O(1)的时间复杂度引出来了,当前地址+偏移量直接找到所需要的数据。
和当前有多少数,当前的位置没有关系 ,这就是O(1)的思想。
怎么样,不知道大家有没有理解呢?如果还有什么疑问欢迎留言哦。
想要轻松地学好计算机相关知识,快来程序猿充电站吧,我在这里等你。
猜你喜欢
- 2024-09-25 评估算法及算法的时间复杂度 评估算法有哪些
- 2024-09-25 关于算法的时间复杂度和大O记号的简单理解
- 2024-09-25 面试官:说说你对算法中时间复杂度,空间复杂度的理解?如何计算
- 2024-09-25 排序算法时间复杂度、空间复杂度分享
- 2024-09-25 数据结构与算法-时间复杂度 数据结构中时间复杂度的定义
- 2024-09-25 算法的时间和空间复杂度-程序员的噩梦
- 2024-09-25 Python算法 00--时间复杂度和空间复杂度
- 2024-09-25 「算法」几分钟时间让你彻底学会—空间复杂度
- 2024-09-25 五分钟带你理解Java算法的时间复杂度
- 2024-09-25 「算法」什么是冒泡排序 冒泡排序的算法原理
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)