复杂度

时间复杂度(time complexity):估算程序指令的执行次数(执行时间)

大O表示法(Big O)

一般用大O表示法来描述复杂度,它表示的是数据规模 n 对应的复杂度

◼ 忽略常数、系数、低阶

9 >> O(1)

2n + 3 >> O(n)

n 2 + 2n + 6 >> O(n 2 )

4n 3 + 3n 2 + 22n + 100 >> O(n 3 )

写法上,n 3 等价于 n^3

◼ 注意:大O表示法仅仅是一种粗略的分析模型,是一种估算,能帮助我们短时间内了解一个算法的执行效率

空间复杂度(space complexity):估算所需占用的存储空间

什么是数据结构?

数据结构是计算机存储、组织数据的方式

线性结构

线性表(数组、链表、栈、队列、哈希表)

树形结构(二叉树、AVL树、红黑树、B树、堆、Trie、霍夫曼树、并查集)

图形结构

线性表是具有n个相同类型元素的有限序列

数组

数组是一种顺序存储的线性表,所有元素的内存地址是连续的。

数组最大的优点:快速查询

数组最好应用于“索引有语意”的情况

但并非所有有语意的索引都适用于数组

数组也可以处理“索引没有语意”的情况