常用的排序算法和时间复杂度
2016-05-31 17:53
267 查看
1. 数据结构部分
数据结构中常用的操作的效率表通用数据结构 | 查找 | 插入 | 删除 | 遍历 |
数组 | O(N) | O(1) | O(N) | — |
有序数组 | O(logN) | O(N) | O(N) | O(N) |
链表 | O(N) | O(1) | O(N) | — |
有序链表 | O(N) | O(N) | O(N) | O(N) |
二叉树 | O(logN) | O(logN) | O(logN) | O(N) |
二叉树(最坏) | O(N) | O(N) | O(N) | O(N) |
红黑树 | O(logN) | O(logN) | O(logN) | O(N) |
2-3-4树 | O(logN) | O(logN) | O(logN) | O(N) |
哈希表 | O(1) | O(1) | O(1) | — |
专用数据结构 | ||||
栈 | — | O(1) | O(1) | — |
队列 | — | O(1) | O(1) | — |
优先级队列 | — | O(N) | O(1) | — |
优先级队列(堆) | — | O(logN) | O(logN) |
2. 排序算法
常见的排序算法比较表排序 | 平均情况 | 最好情况 | 最坏情况 | 稳定与否 | 空间复杂度 |
冒泡排序 | O(N2) | O(N) | O(N2) | 稳定 | 1 |
选择排序 | O(N2) | O(N2) | O(N2) | 不稳定 | 1 |
插入排序 | O(N2) | O(N) | O(N2) | 稳定 | 1 |
希尔排序 | O(NlogN) | (依赖于增量序列) | 不稳定 | 1 | |
快速排序 | O(NlogN) | O(NlogN) | O(N2) | 不稳定 | O(logN) |
归并排序 | O(NlogN) | O(NlogN) | O(NlogN) | 稳定 | O(N) |
二叉树排序 | O(NlogN) | O(NlogN) | O(N2) | 稳定 | O(N) |
堆排序 | O(NlogN) | O(NlogN) | O(NlogN) | 不稳定 | 1 |
拓扑排序 | O(N+E) | — | — | — | O(N) |
相关文章推荐
- onCreate()方法中参数Bundle savedInstanceState 的意义
- Codeforces Round #352 (Div. 2)(A)模拟
- fatal error LNK1168: cannot open xxxxxx.ocx ffor writing
- 稠化报表然后行转列
- 数据库连接优化
- css 框模型
- PHP异常处理以及自定义顶级异常处理器
- 《JavaScript学习笔记》:DOM基础
- Android_BroadcastReceiver(三)
- Git SSH Key 生成步骤
- 最后一个单词的长度
- React Native 中组件的生命周期
- JSP与Freemarker和velocity的区别
- memcached在windows下的安装与命令使用方法
- 彻底明白Android中AIDL及其使用
- parseInt 与 parseFloat 解析
- Python 命名空间
- Leetcode no. 350
- 第14周阅读程序1(1)
- c++ primer(第五版)学习笔记及习题答案代码版(第十三章)拷贝控制