定义
广义:数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法
数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上
10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
复杂度
大O复杂度表示法:T(n) = O*f(n),渐进式复杂度,跟执行代码的次数有关
其中,T(n) 我们已经讲过了,它表示代码执行的时间;n 表示数据规模的大小;f(n) 表示每行代码执行的次数总和。因为这是一个公式,所以用 f(n) 来表示。公式中的 O,表示代码的执行时间 T(n) 与 f(n) 表达式成正比
- 时间复杂度分析
- 只关注循环执行次数最多的一段代码
- 加法法则:总复杂度等于量级最大的那段代码的复杂度
- 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积

- 空间复杂度分析
表示算法的存储空间与数据规模之间的增长关系
- 最好时间复杂度:在最理想的情况下,执行这段代码的时间复杂度
- 最坏时间复杂度:在最糟糕的情况下,执行这段代码的时间复杂度
- 平均情况时间复杂度:加权平均时间复杂度或者期望时间复杂度
- 均摊时间复杂度:是否能将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上,均摊时间复杂度一般都等于最好情况时间复杂度
