# 算法基础概念

# 算法衡量标准

# 时间复杂度

基本执行次数统计

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

#

# 二叉树(TREE)

# 遍历

深度优先DFS

Pre-order TraversalIn-order TraversalPost-order Traversal

广度优先BFS

层次遍历

# Pro-order