前端培训丁鹿学堂:前端算法基础知识总结

65 阅读2分钟
数据结构与算法

数据结构:计算机存储,组织数据的方式。 算法:一系列解决问题的清晰明确的指令。

程序

程序简单来说,可以认为是 数据结构+ 算法 其实所有的数据结构都是为算法提供服务的,而算法也是围绕数据结构去进行的一系列的操作,他们相辅相成。 算法是一系列的指令去操作数据,没有数据结构就没有办法存数据。

常用的数据结构

有序的数据结构:栈,队列,链表。 无序的数据结构:集合,字典。 高级的数据结构:树,堆,图。

常见的需要了解的算法:

链表:遍历链表,删除链表节点 数组:冒泡排序,选择排序,插入排序,归并排序等 树和图:深度优先遍历

时间复杂度:

时间复杂度是一个函数,用大写的O表示。O(1),O(n)

它是用来定性描述算法的运行时间。定性是说它不会精确到某个算法运行多少秒,而是描述算法的时间大致趋势。

我们需要了解的几个有O(1)<O(logn) < O(n)<O(n^2) < O(2^n),了解这些顺序就可以了。 大概理解:

如果没有循环,就是O(1) ,

如果有for循环,for循环的代码因为执行了n次,所以时间复杂度就是O(n)

如果两个for循环嵌套,那么时间复杂度就是O(n^2),因为是两个O(n)相乘

时间复杂度为O(logn) 常见也是在循环中,只是循环的终止条件为大于2的n次方,在二分法中会涉及到。

空间复杂度

空间复杂度也是一个函数,也是用O表示。常见的空间复杂度有O(1),O(n),O(n^2)

空间复杂度是算法在运行过程中临时占用储存空间大小的度量。

通俗点说就是看你写的这段代码占用空间的大小。占用空间越小,运行时间越短,这个算法就越好。

O(n)的解释:

如果某段代码运行过程中,占用了n个内存单元的值,那么他的空间复杂度就是O(n)

let arr = []
for(var i =0;i<10;i++){
    arr.push(i)
}

O(n^2) 其实代码上看就是一个矩阵。在前端我们可以理解为二维数组。他存储了n^2的变量。