美文网首页
算法与数据结构一、算法的复杂度

算法与数据结构一、算法的复杂度

作者: 超_onlyu | 来源:发表于2020-11-26 14:06 被阅读0次

基本概念

算法的复杂度通常使用O(1), O(n), O(logn), O(nlogn)来表示,即可以表示时间复杂度也可以表示空间复杂度。
大O加上(),里面其实包裹的是一个函数f(),O(f()),指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。

说明 (备注:n是数据量增大倍数)

O(1)
复杂度最低,为常量级,时间消耗与数据量大小无关
O(n)
耗时随着数据量增大而增大
O(n^2)
耗时为n*n
O(logn)
随着数据量增大,耗时增大\log_mn(m为底n的对数倍),底数m不固定,由分治的复杂度决定,如二分法就会以2为底数,三分法就会以3为底数。(例如,以2为底,n=256,得出耗时增加8倍)
O(nlogn)
随着数据量增大,耗时增加n\log_mn(例如底数为2,数据量增加n=256倍,耗时增加256*8倍),这个复杂度高于线性低于平方,归并排序就是这个时间复杂度。

复杂度与算法举例

数组:连续的内存空间,对于指定下标的查找,时间复杂度为O(1);通过给定值查找需要遍历数组逐一对比,时间复杂度为O(n),如果是有序数组可以通过采用二分查找、插值查找、斐波那契查找等方式将查找复杂度提高为O(logn);对于一半插入删除操作,会移动数组元素,其平均复杂度也为O(n)

二叉树:对一棵相对平衡的有序二叉树,对其进行插入,查找,删除等操作,平均复杂度均为O(logn)

哈希表:相比上述几种数据结构,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下(后面会探讨下哈希冲突的情况),仅需一次定位即可完成,时间复杂度为O(1),后面有专门文章来介绍强大的哈希表。

图例

图1

相关文章

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 数据结构与算法基本概念

    数据结构与算法 本文包括: 算法概念 时间复杂度 大 O 记法 数据结构概念 Python 内置类型的效率 算法的...

  • 数据结构与算法-复杂度分析

    时间、空间复杂度:衡量算法执行小路的指标,数据结构与算法离不开时间、空间复杂度分析,复杂度分析是算法的精髓。 为什...

  • 数据结构与算法之时间复杂度分析

    复杂度分析,是所有数据结构与算法的重中之重,复杂度分析是整个算法学习的精髓,只要掌握了它,可以说数据结构和算法的内...

  • 数据结构与算法-C语言4-算法时间和空间复杂度

    数据结构与算法-目录 1.时间复杂度的定义 算法时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。...

  • 算法的复杂度分析

    本文是对极客时间《数据结构与算法之美》03-04 节课关于算法复杂度分析的小结。 前面:为什么要学习数据结构与算法...

  • 数据结构学习大纲

    第一章 绪论 数据结构基本概念数据结构基本概念算法的基本概念算法的时间复杂度与空间复杂度分析基础时间复杂度分析空间...

网友评论

      本文标题:算法与数据结构一、算法的复杂度

      本文链接:https://www.haomeiwen.com/subject/pxbaiktx.html