数据结构与算法第一篇
什么是数据结构和算法?
数据结构,就是一组数据的存储结构。
算法,就是操作数据的一组方法。
衡量的标准(metric)---时间复杂度和空间复杂度。
时间复杂度的全称是渐进时间复杂度,表示算法的执行时间与数据规模之间的增长关系
空间复杂度全称就是渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系。
常用的复杂度级别?
多项式阶:随着数据规模的增长,算法的执行时间和空间占用,按照多项式的比例增长。包括,
O(1)(常数阶)、O(logn)(对数阶)、O(n)(线性阶)、O(nlogn)(线性对数阶)、O(n^2)(平方阶)、O(n^3)(立方阶)
大O表示法来源
算法的执行时间与每行代码的执行次数成正比,用T(n) = O(f(n))表示,其中T(n) 表示算法执行总时间,f(n)表示每行代码执行总次数,而n往往表示数据的规模。
复杂度分析的4个概念
- 最坏情况时间复杂度:代码在最理想情况下执行的时间复杂度。
- 最好情况时间复杂度:代码在最坏情况下执行的时间复杂度。
- 平均时间复杂度:用代码在所有情况下执行的次数的加权平均值表示。
- 均摊时间复杂度:在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级别复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于低级别复杂度。
重点学习20个最常用的最基础的数据结构和算法
10个数据结构: 数组,链表,栈,队列,散列表,二叉树,堆,跳表,图,Trie树
10个算法: 递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法