`
骑猪逛街666
  • 浏览: 135184 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

每个程序员都应该收藏的算法复杂度速查表

阅读更多
阅读原文请点击:http://click.aliyun.com/m/23520/
摘要: 算法复杂度这件事 这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。

算法复杂度这件事
这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为了节省大家的时间,我就创建了这个,希望你喜欢!

--- Eric

图例
绝佳 不错 一般 不佳 糟糕
数据结构操作
数据结构 时间复杂度 空间复杂度
平均 最差 最差
访问 搜索 插入 删除 访问 搜索 插入 删除
Array O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(n) O(n)
Stack O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
Singly-Linked List O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
Doubly-Linked List O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
Skip List O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n) O(n) O(n) O(n) O(n log(n))
Hash Table - O(1) O(1) O(1) - O(n) O(n) O(n) O(n)
Binary Search Tree O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n) O(n) O(n) O(n) O(n)
Cartesian Tree - O(log(n)) O(log(n)) O(log(n)) - O(n) O(n) O(n) O(n)
B-Tree O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
Red-Black Tree O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
Splay Tree - O(log(n)) O(log(n)) O(log(n)) - O(log(n)) O(log(n)) O(log(n)) O(n)
AVL Tree O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
数组排序算法
算法 时间复杂度 空间复杂度
最佳 平均 最差 最差
Quicksort O(n log(n)) O(n log(n)) O(n^2) O(log(n))
Mergesort O(n log(n)) O(n log(n)) O(n log(n)) O(n)
Timsort O(n) O(n log(n)) O(n log(n)) O(n)
Heapsort O(n log(n)) O(n log(n)) O(n log(n)) O(1)
Bubble Sort O(n) O(n^2) O(n^2) O(1)
Insertion Sort O(n) O(n^2) O(n^2) O(1)
Selection Sort O(n^2) O(n^2) O(n^2) O(1)
Shell Sort O(n) O((nlog(n))^2) O((nlog(n))^2) O(1)
Bucket Sort O(n+k) O(n+k) O(n^2) O(n)
Radix Sort O(nk) O(nk) O(nk) O(n+k)
图操作
节点 / 边界管理 存储 增加顶点 增加边界 移除顶点 移除边界 查询
Adjacency list O(|V|+|E|) O(1) O(1) O(|V| + |E|) O(|E|) O(|V|)
Incidence list O(|V|+|E|) O(1) O(1) O(|E|) O(|E|) O(|E|)
Adjacency matrix O(|V|^2) O(|V|^2) O(1) O(|V|^2) O(1) O(1)
Incidence matrix O(|V| ⋅ |E|) O(|V| ⋅ |E|) O(|V| ⋅ |E|) O(|V| ⋅ |E|) O(|V| ⋅ |E|) O(|E|)
堆操作
类型 时间复杂度
Heapify 查找最大值 分离最大值 提升键 插入 删除 合并
Linked List (sorted) - O(1) O(1) O(n) O(n) O(1) O(m+n)
Linked List (unsorted) - O(n) O(n) O(1) O(1) O(1) O(1)
Binary Heap O(n) O(1) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(m+n)
Binomial Heap - O(1) O(log(n)) O(log(n)) O(1) O(log(n)) O(log(n))
Fibonacci Heap - O(1) O(log(n)) O(1) O(1) O(log(n)) O(1)

阅读原文请点击:http://click.aliyun.com/m/23520/
分享到:
评论

相关推荐

    每个程序员都应该收藏的算法复杂度速查表 – 码农网1

    本文旨在为程序员提供一个算法复杂度速查表,涵盖计算机科学中常见算法的时间和空间复杂度。该速查表可以帮助程序员在面试和编程中快速查找算法的复杂度,从而节省时间和提高效率。 数据结构操作 在数据结构操作中...

    程序员速查表(涵盖所有编程语言cheat).rar

    这份名为"程序员速查表(涵盖所有编程语言cheat).rar"的压缩包文件,显然是一个集大成者,包括了多种编程语言的速查资料,为开发者提供了方便快捷的查询工具。 首先,速查表对于初学者来说尤其有价值,它们可以...

    程序员/设计师能用上的 75 份速查表

    75 份速查表,由 vikas 收集整理,包括:jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress...

    程序员必备的66份速查表

    66份速查表,包括:jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、Oracle、...

    程序员或设计师能用上的75份速查表

    标题中的“程序员或设计师能用上的75份速查表”是一个集合,包含了多种编程语言和技术领域的实用参考资料,旨在帮助这两个职业群体快速解决问题和提升工作效率。这些速查表通常包括了关键语法、函数、快捷键、命令行...

    ASM编程速查表, 包括ASCII码字符集, 数据类型, ASM语法速查

    在ASM编程中,程序员常常需要知道这些字符对应的数值,因为每个ASCII码都可以用一个字节(8位)的二进制数来表示。例如,大写字母'A'的ASCII码是65,小写字母'z'的ASCII码是122。 数据类型在ASM编程中至关重要,...

    算法时间复杂度

    - **优化设计**:了解时间复杂度可以帮助程序员在设计算法时避免使用低效的方法。 ### 5. 实际应用案例 例如,在开发搜索引擎时,对于大量的文本数据进行搜索操作,如果采用时间复杂度为O(n^2)的算法,则随着数据...

    算法时间复杂度分析基础 (论文)

    作为程序员,掌握基本的算法时间复杂度分析方法是非常必要的。 从数学上定义,给定算法 A,如果存在函数 F(n),当 n=k 时,F(k) 表示算法 A 在输入规模为 k 的情况下的运行时间,则称 F(n) 为算法 A 的时间复杂度。...

    75份速查表

    【标题】:“75份速查表”是一个集合了多种编程语言和技术的参考资料包,旨在为程序员和设计师提供快速查询和参考的工具。这个资源包含了HTML、C#、CSS、JavaScript、C、C++、HTTP、SQL、SQLite、XML以及PHP等多个...

    c函数速查表(c语言)

    C函数速查表是C程序员的必备参考资料,尤其对于初学者和有经验的开发者来说,都是一个极其有用的工具。这份速查表包含了C语言标准库中的大量函数,能够帮助开发者快速定位并理解所需函数的用法。 C语言的标准库分为...

    程序员或设计师能用上的91份速查表

    程序员或设计师能用上的91份速查表,包括各种语言和技术。包括Actionscript Apache Ant ASP C C# C++ Delphi Java Javascript Perl ...

    程序员或设计师能用上的91份速查表 cheat sheets

    程序员或设计师能用上的91份速查表,包括各种语言和技术。包括Actionscript Apache Ant ASP C C# C++ Delphi Java Javascript Perl ...

    openmp命令速查表

    OpenMP提供了默认的并行环境,但是允许程序员指定是所有变量都是共享的(default(shared))还是都是私有的(default(none)),或者显式地声明每个变量的属性。 最后,OpenMP通过环境变量可以对并行行为进行调整,...

    程序员或设计师能用上的100+份速查表

    程序员或设计师能用上的91份速查表包括:Actionscript Ant C C# C++ Delphi Java Javascript Perl ...及Linux MacOS OS Solaris Ubuntu等操作系统

    程序员速查表的链接

    资源链接地址,里面有一些设计模式、HTML5、CSS、数据库、PS还有其他开发所需要的一些技术或者API帮助文档

    分享下程序员/设计师能用上的 75 份速查表

    这份文件列举了针对程序员和设计师可能用得上的75份速查表,速查表以图片或PDF文件形式存在,涵盖了广泛的技术栈和工具,以便用户能够快速查找和参考相关信息。 ### 程序员相关速查表: 1. **jQuery速查表**:列出...

    程序员或设计师能用上的91份速查表.rar

    程序员或设计师能用上的91份速查表包括:Actionscript Ant C C# C++ Delphi Java Javascript Perl ...及Linux MacOS OS Solaris Ubuntu等操作系统

    王道程序员求职宝典+算法笔记

    《王道程序员求职宝典+算法笔记》是一本旨在帮助准备进入IT行业的程序员们提升技能、熟悉面试流程的重要参考资料。这本书结合了众多知名企业的程序员笔试和面试题目,为读者提供了全面而深入的学习路径,旨在帮助...

    单片机指令速查表.zip

    单片机指令速查表是学习和开发单片机系统时不可或缺的参考资料。单片机,全称为微控制器(Microcontroller Unit,MCU),是一种集成了CPU、内存、定时器/计数器、输入/输出接口等核心功能的集成电路,广泛应用于各种...

Global site tag (gtag.js) - Google Analytics