1.数据结构和算法列举
首先算法是依赖于数据结构的,合适的数据结构导致算法的性能会有很大出入。下面列出了一些数据结构(Data Structure)(左边)和算法(Algorithm)(右边)。
2.性能
说到性能,就要说到时间复杂度和空间复杂度。一道面试题或者业务场景,一般来说实现的话可以有多个数据结构和算法选择,但是接下来的面试官说不定也会问道你选择某种数据结构和算法的原因(为了系统节省时间空间不也是需要抉择吗?)
所以这俩个复杂度也是需要了解的。时间复杂度就是程序要耗时多久,空间复杂度一般是指 程序里面发的数据需要占多少空间。
Big O notation(可以百度,不在这里展开)
(一般数据可以根据输入确定,所以一般大家看伪代码都是讲的时间复杂度,而空间复杂度可以类推 )
O(1),常数复杂度。
tips: O(1) O(2) O(100) O(1000) 都是常数复杂度
for循环:第一个一个for循环,第二个为嵌套for循坏。(这里的N你并不知道实际入参是多少,所以概数化为N)
其他复杂度
算法优化举例:
如下图所示,直接累加的时间复杂度是O(n)。
经过总结规律,算出求和公式,只要一次计算即可以算出结果,所以复杂度为O(1)。这个总结规律的过程就可以称为选取算法,也就是算法的优化。
现实中以及面试中不会是这么简单的,复杂的有递归算法,下面举例其中较为常见的一种。
经典递归算法:斐波拉契(这里不展开学习,后续会有)
那么它的时间复杂度是多少呢?是2的n次方。
先记下来,后续详细讲解。所以有的时候,看起来很简单的算法公式,但是在实际计算机计算的时候,复杂度并不是很简单。
所以算法的学习任重而道远。本篇暂时结束。