时间复杂度和空间复杂度详解带例题(精)

您所在的位置:网站首页 python算法的效率通过什么来度量计算 时间复杂度和空间复杂度详解带例题(精)

时间复杂度和空间复杂度详解带例题(精)

2024-03-28 16:49| 来源: 网络整理| 查看: 265

算法

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。

那么我们应该如何去衡量不同算法之间的优劣呢?

主要还是从算法所占用的「时间」和「空间」两个维度去考量。

时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。

下面我来分别介绍一下「时间复杂度」和「空间复杂度」的计算方式。

时间复杂度

首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。 当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。

常见的时间复杂度有:

常数阶O(1),对数阶O(log2 n),线性阶O(n),线性对数阶O(n log2 n),平方阶O(n^2),立方阶O(n^3)k次方阶O(n^K),指数阶O(2^n)。

随着n的不断增大,时间复杂度不断增大,算法花费时间越多。

计算方法 ①选取相对增长最高的项 ②最高项系数是都化为1 ③若是常数的话用O(1)表示 如f(n)=2*n^3+2n+100 则O(n)=n^3。

通常我们计算时间复杂度都是计算最坏情况

时间复杂度例题

1. 常数例题的时间复杂度

int x = 90; int y = 100; while (y > 0) { if (x > 100) { x = x - 10; y--; } else { x++; } }

这段代码里只有常量,所以时间复杂度只有O(1)

2. for循环的时间复杂度

for(i=1; i


【本文地址】


今日新闻


推荐新闻


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