常用的八大排序算法时间复杂度和空间复杂度比较
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。
各种内部排序按所采用的基本思想(策略)可分为:插入排序、交换排序、选择排序、归并排序和基数排序,它们的基本策略是:
1、插入排序:依次将无序序列中的一个记录,按关键字值的大小插入到已排好序一个子序列的适当位置,直到所有的记录都插入为止。具体的方法有:直接插入、表插入、2-路插入和shell排序。
2、交换排序:对于待排序记录序列中的记录,两两比较记录的关键字,并对反序的两个记录进行交换,直到整个序列中没有反序的记录偶对为止。具体的方法有:冒泡排序、快速排序。
3、选择排序:不断地从待排序的记录序列中选取关键字最小的记录,放在已排好序的序列的最后,直到所有记录都被选取为止。具体的方法有:简单选择排序、堆排序。
4、归并排序:利用“归并”技术不断地对待排序记录序列中的有序子序列进行合并,直到合并为一个有序序列为止。
5、基数排序:按待排序记录的关键字的组成成分(“位”)从低到高(或从高到低)进行。每次是按记录关键字某一“位”的值将所有记录分配到相应的桶中,再按桶的编号依次将记录进行收集,最后得到一个有序序列。
常见的内部排序算法有:插入排序(insertion sorting)、希尔排序(Shell Sort)、选择排序(Selection sort)、堆排序(Heapsort)、冒泡排序(Bubble Sort)、快速排序(quick sort)、归并排序(Merge sort)、基数排序(Radix sort)。
下图列出了各种排序算法的时间复杂度、空间复杂度和稳定性情况。其中,空间复杂度仅列举了平均情况下的复杂度,由于希尔排序的时间复杂度依赖于增量函数,所以这里无法准确地给出其时间复杂度。
常用的八大排序算法时间复杂度和空间复杂度比较相关推荐
- 八大排序算法时间复杂度对比
八大排序算法时间复杂度对比
- C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
排序算法分类 内部排序算法又分为基于比较的排序算法和不基于比较的排序算法,其分类如下: 比较排序: 直接插入排序 希尔排序 (插入) 冒泡排序 快速排序 (交换) 直接选择排序 ...
- 排序算法时间复杂度、空间复杂度、稳定性整理
涉及排序算法包括:简单选择排序.直接插入排序.希尔排序.归并排序.冒泡排序.快速排序.堆排序.基数排序 时间复杂度:快些以nlogn的速度归队 此句表示时间复杂度为O(nlogn)的排序," ...
- 排序算法时间复杂度、空间复杂度、稳定性比较
排序算法分类 排序算法比较表格填空 排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 :-----: :-–: :-–: :-–: 选择排序 :-----: :-–: :-–: ...
- 九大排序算法时间复杂度、空间复杂度、稳定性
排序算法 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 冒泡排序 O(n²) O(n²) O(n) O(1) 稳定 直接选择排序 O(n²) O(n²) O(n) O(1) 不稳 ...
- (最全)数据结构各排序算法时间复杂度,空间复杂度,稳定性比较
算法 时间复杂度 最好 ---------- 平均 --------- 最坏 直接插入排序 o(n)-------- o(n的平方) ----------- o(n的平方) 冒泡排序 o(n)---- ...
- 七、排序算法时间复杂度和空间复杂度介绍
文章目录 一.排序算法的介绍 二.排序的分类 三.算法的时间复杂度 3.1 度量一个程序(算法)执行时间的两种方法 3.2 时间频度 3.3 时间复杂度 3.4 常见时间复杂度 3.5 平均时间复杂度 ...
- 常见排序算法时间复杂度和空间复杂度
快速排序时间复杂度: 可以看这个视频视频 https://www.bilibili.com/video/BV1xb411T7dN?spm_id_from=333.337.search-card.all ...
- 10大排序算法时间复杂度和空间复杂度总结
中文名称 英文名称 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 选择排序 Selection n2 n2 n2 1 不稳 冒泡排序 Bubble n2 n2 n 1 稳 插入排 ...
最新文章
- 苹果6尺寸_小屏+刘海被安卓阵营抛弃,苹果却玩出了花
- linux 显示文字在桌面背景,Linux下Xwindow的字体配置(所谓的字体美化)
- 得罪前女友到底有多可怕?
- java判断读到末尾_IO流如何判断读取到了流的结尾,程序中以-1来判断,是流中写入一个EOF表示流结束吗,底层实现呢?...
- Leetcode--49. 字母异味词分组
- 个位数统计(java)
- mysql order by
- 【POJ 1456】Supermarket【并查集】
- Android端公司通讯录开发与实现(一)
- python做网络图_使用Python的networkx绘制精美网络图教程
- Premiere cs6导出MP4格式视频
- 强力推荐—20款免费备份文件软件
- 虚拟现实、增强现实与全息投影的区别
- html结构内容拾忆
- python中copy的使用
- 数学基础:斜率、正切与 math.tan()
- 1319. 移棋子游戏(sg+图论(移棋子)邻接表)
- sas table将缺失值计入百分比_两种SAS代码实现变量的缺失值频数及占比
- 京东搜索引擎技术-Elasticsearch快速入门
- MIUI V5 移植到Wave---01