当前位置:   article > 正文

数据结构与算法--算法复杂度_算法复杂度的数量级

算法复杂度的数量级

前言

常见数据结构与算法:
<1>数据结构:数组,链表,栈,队列,散列表,二叉树,堆,跳图,树,Tire树

<2>算法:递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法。

一、算法复杂度

1. T(n)= O(F(n))

T(n)代表代码执行的时间;n表示数据规模的大小;F(n)表示每行代码的次数总和。因为这是一个公式,所以用F(n)来表示。公式中的O表示代码的执行时间T(n)与F(n)表达式成正比。

2.复杂度分析法则

<1>单段代码看高频:比如循环。
<2>多段代码取最大:比如一段代码有单循环和多重循环,那么取多重循环的复杂度。
<3>嵌套代码求乘积:比如递归,多重循环等。
<4>多个规模求加法:比如方法有两个参数控制两个循环的次数,那么这时候就取二者复杂度相加。

3.时间复杂度分析

<1>只关注循环执行次数最多的一段代码
<2>假发法则:总复杂度等于量级最大的那段代码的复杂度
<3>乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积

4.常见时间复杂度实例分析

复杂度量级(按数量级递增)
多项式阶:随着数据规模的增长,算法的执行时间和空间占用,按照多项式的比例增长。
<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!)

5.复杂度增长趋势图

在这里插入图片描述

6.复杂度分析概念

<1>最坏情况时间复杂度:代码在最坏情况下执行的时间复杂度
<2>最好情况时间复杂度:代码在最理想情况下执行的时间复杂度
<3>平均时间复杂度:代码在所有情况下执行的次数的加权平均值
<4>均摊时间复杂度:在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于低级别复杂度。

总结

通常在写代码的时候要同时注重代码的时间复杂度和空间复杂度。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/721869
推荐阅读
相关标签
  

闽ICP备14008679号