算法基础2:如何计算算法的复杂度

1.数据结构和算法列举

首先算法是依赖于数据结构的,合适的数据结构导致算法的性能会有很大出入。下面列出了一些数据结构(Data Structure)(左边)和算法(Algorithm)(右边)。

数据结构和算法列举

2.性能

说到性能,就要说到时间复杂度空间复杂度。一道面试题或者业务场景,一般来说实现的话可以有多个数据结构和算法选择,但是接下来的面试官说不定也会问道你选择某种数据结构和算法的原因(为了系统节省时间空间不也是需要抉择吗?)

所以这俩个复杂度也是需要了解的。时间复杂度就是程序要耗时多久,空间复杂度一般是指 程序里面发的数据需要占多少空间。

Big O notation(可以百度,不在这里展开)

(一般数据可以根据输入确定,所以一般大家看伪代码都是讲的时间复杂度,而空间复杂度可以类推 )

  O(1),常数复杂度。

   tips: O(1) O(2) O(100) O(1000)  都是常数复杂度

常数复杂度


for循环:第一个一个for循环,第二个为嵌套for循坏。(这里的N你并不知道实际入参是多少,所以概数化为N)

for循环的复杂度

其他复杂度

其他复杂度


算法优化举例:

如下图所示,直接累加的时间复杂度是O(n)。

经过总结规律,算出求和公式,只要一次计算即可以算出结果,所以复杂度为O(1)。这个总结规律的过程就可以称为选取算法,也就是算法的优化。

算法优化

现实中以及面试中不会是这么简单的,复杂的有递归算法,下面举例其中较为常见的一种。

经典递归算法:斐波拉契(这里不展开学习,后续会有)

斐波拉契总结公式


斐波拉契实际运算

那么它的时间复杂度是多少呢?是2的n次方。

先记下来,后续详细讲解。所以有的时候,看起来很简单的算法公式,但是在实际计算机计算的时候,复杂度并不是很简单。

所以算法的学习任重而道远。本篇暂时结束。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容