当前位置: 首页 > Web前端 > JavaScript

我们常说的算法的时间复杂度和空间复杂度是多少?

时间:2023-03-27 18:22:35 JavaScript

前言解决某一类问题,我们可能需要借助算法来实现,实现的手段也可能是多种多样的。虽然问题最终解决了,但是每一个解决方案,也就是算法,还是有优缺点的。既然有比较,就必须有一个可供参考的标准,那么我们在评价一个算法的优劣时,参考的标准是什么呢?一个算法的优劣主要是从它在执行过程中所占用的“时间”和“空间”两个方面来评价的,也就是我们经常听到的“时间复杂度”和“空间复杂度”。时间复杂度:执行算法所需的计算工作量可以估计程序使用处理器的程度。空间复杂度:执行当前算法所需的内存空间,可以估算出程序的处理器占用率。时间复杂度一说到时间复杂度,我们很多人的第一反应就是把算法执行一次,打印出来的执行时间就是它所消耗的时间。事实上,这是不可行的,因为:解决一个问题的算法可能有很多种,将它们一一实现的工作量无疑是巨大的,得不偿失;不同的电脑有不同的软硬件环境,即使使用同一台电脑,不同时间段的系统环境也不同,程序的运行时间很可能会变慢。严重时甚至会导致误判。在实际场景中,我们更喜欢用一个估计值来表示所编程算法的运行时间。所谓估价,即估计值,不是准确值。需要注意的是,虽然估算值不能准确代表算法编写的程序的运行时间,但它并非靠猜测得出,需要经过仔细计算后得出。表示由算法编写的程序的运行时间。它不是一个准确的值(实际上是无法得到的),而是按照合理的方法得到的估计值。我们一般用“大O表示法”来表示时间复杂度:T(n)=O(f(n))n是影响复杂度变化的因素f(n)是复杂度的具体算法O代表比例关系满这个公式的名称是:算法的渐近时间复杂度。大O表示法并不是用来真实表示一个算法的执行时间,而是用来表示代码执行时间的增长趋势。我们来看一个常见的例子:for(letindex=0;index