数据结构:计算机存储,组织数据的方式。
算法:一系列解决问题的清晰明确的指令。
程序简单来说,可以认为是 数据结构+ 算法
其实所有的数据结构都是为算法提供服务的,而算法也是围绕数据结构去进行的一系列的操作,他们相辅相成。
算法是一系列的指令去操作数据,没有数据结构就没有办法存数据。
有序的数据结构:栈,队列,链表。
无序的数据结构:集合,字典。
高级的数据结构:树,堆,图。
链表:遍历链表,删除链表节点
数组:冒泡排序,选择排序,插入排序,归并排序等
树和图:深度优先遍历
时间复杂度是一个函数,用大写的O表示。O(1),O(n)
它是用来定性描述算法的运行时间。定性是说它不会精确到某个算法运行多少秒,而是描述算法的时间大致趋势。
我们需要了解的几个有O(1)
如果没有循环,就是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的变量。