数据结构和算法对建立解决问题的思想非常重要
时间复杂度
一个算法的时间复杂度反映了程序运行从开始到结束所需要的时间。把算法中基本操作重复执行的次数(频度)作为算法的时间复杂度。
没有循环语句,记作O(1),也称为常数阶。只有一重循环,则算法的基本操作的执行频度与问题规模n呈线性增大关系,记作O(n),也叫线性阶
空间复杂度
一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。
一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。
数据结构
数据结构即数据元素相互之间存在的一种和多种特定的关系集合。
可分为逻辑结构和存储结构来理解。
栈
栈(stack) 只能在栈顶操作 后进先出(LIFO:last in first out)
应用: 函数调用栈、递归、十进制转二进制
栈结构实现
function Stack(){
this.items = []
}
var stack = new Stack()
队列
队列(queue) 先进先出
应用: 线程
优先级队列
- 每个元素不再只是一个数据,还包含优先级。
- 在添加元素过程中,根据优先级放入到正确位置。