# 算法基础概念
# 算法衡量标准
# 时间复杂度
基本执行次数统计
1、线性
2、对数
3、常量
4、多项式
渐进式时间复杂度
保留高阶项 省去系数
# 空间法复杂度
临时占用存储空间的大小
1、常量空间
2、线性空间【数组】
3、二维空间【二维数组】
4、递归空间【递归深度】
# 应用场景
1、运算
2、查找
3、排序
4、最优决策
5、面试
# 数据结构
数据结构是数据的组织、管理和存储格式
# 线性结构
1、数组
2、链表
衍生
3、栈
4、队列
5、哈希表
# 树
二叉树
二叉堆
# 图
# 其它
跳表
哈希链表
位图
# 数据结构
# 线性结构
# 数组
适合读多写少的场景
正常数组
有限个相同类型变量组成的有序集
内存中顺序存储,可实现逻辑上顺序列表 (查找只需要计算位置便可轻松得到)
js
js内存任何类型的且大小可动态调整
js的数组是依靠链表(或字典)实现的,存储在堆中,所以底层查找的时候需要从数组第一位开始遍历查找
最新的js,会为同种数据类型的数组分配连续空间了。
所以JS写代码的时候尽量保证数组内数据类型相同。
ArrayBuffer 存储在栈内 不可操作,只能通过 类型数组 Int8Array, 或dataview操作
基础操作
//创建数组
arr1=[] //字面量
arr= Array()
// 查
arr[3]
// 改
arr[3] = a
// 插入
js的数组的length不是只读的
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
#
# 二叉树(TREE)
# 遍历
深度优先DFS
前Pre-order Traversal 中In-order Traversal 后Post-order Traversal
广度优先BFS
层次遍历