赞
踩
常见数据结构与算法:
<1>数据结构:数组,链表,栈,队列,散列表,二叉树,堆,跳图,树,Tire树
<2>算法:递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法。
T(n)代表代码执行的时间;n表示数据规模的大小;F(n)表示每行代码的次数总和。因为这是一个公式,所以用F(n)来表示。公式中的O表示代码的执行时间T(n)与F(n)表达式成正比。
<1>单段代码看高频:比如循环。
<2>多段代码取最大:比如一段代码有单循环和多重循环,那么取多重循环的复杂度。
<3>嵌套代码求乘积:比如递归,多重循环等。
<4>多个规模求加法:比如方法有两个参数控制两个循环的次数,那么这时候就取二者复杂度相加。
<1>只关注循环执行次数最多的一段代码
<2>假发法则:总复杂度等于量级最大的那段代码的复杂度
<3>乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
复杂度量级(按数量级递增)
多项式阶:随着数据规模的增长,算法的执行时间和空间占用,按照多项式的比例增长。
<1>常数阶 O(1)
<2>对数阶 O(log n)
<3>线性阶O(n)
<4>线性对数阶O(nlog n)
<5>平方阶O(n^2)
非多项式阶:随着数据规模的增长,算法的执行时间和空间占用暴增,这类算法性能极差
<6>指数阶O(2^n)
<7>阶乘阶O(n!)
<1>最坏情况时间复杂度:代码在最坏情况下执行的时间复杂度
<2>最好情况时间复杂度:代码在最理想情况下执行的时间复杂度
<3>平均时间复杂度:代码在所有情况下执行的次数的加权平均值
<4>均摊时间复杂度:在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于低级别复杂度。
通常在写代码的时候要同时注重代码的时间复杂度和空间复杂度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。