定义

广义:数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法
数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上
图片.png10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

复杂度

大O复杂度表示法:T(n) = O*f(n),渐进式复杂度,跟执行代码的次数有关
其中,T(n) 我们已经讲过了,它表示代码执行的时间;n 表示数据规模的大小;f(n) 表示每行代码执行的次数总和。因为这是一个公式,所以用 f(n) 来表示。公式中的 O,表示代码的执行时间 T(n) 与 f(n) 表达式成正比

  • 时间复杂度分析
    1. 只关注循环执行次数最多的一段代码
    2. 加法法则:总复杂度等于量级最大的那段代码的复杂度
    3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积

图片.png

  • 空间复杂度分析

表示算法的存储空间与数据规模之间的增长关系
图片.png

  • 最好时间复杂度:在最理想的情况下,执行这段代码的时间复杂度
  • 最坏时间复杂度:在最糟糕的情况下,执行这段代码的时间复杂度
  • 平均情况时间复杂度:加权平均时间复杂度或者期望时间复杂度
  • 均摊时间复杂度:是否能将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上,均摊时间复杂度一般都等于最好情况时间复杂度