排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

各种内部排序按所采用的基本思想(策略)可分为:插入排序、交换排序、选择排序、归并排序和基数排序,它们的基本策略是:

1、插入排序:依次将无序序列中的一个记录,按关键字值的大小插入到已排好序一个子序列的适当位置,直到所有的记录都插入为止。具体的方法有:直接插入、表插入、2-路插入和shell排序。

2、交换排序:对于待排序记录序列中的记录,两两比较记录的关键字,并对反序的两个记录进行交换,直到整个序列中没有反序的记录偶对为止。具体的方法有:冒泡排序、快速排序。

3、选择排序:不断地从待排序的记录序列中选取关键字最小的记录,放在已排好序的序列的最后,直到所有记录都被选取为止。具体的方法有:简单选择排序、堆排序。

4、归并排序:利用“归并”技术不断地对待排序记录序列中的有序子序列进行合并,直到合并为一个有序序列为止。

5、基数排序:按待排序记录的关键字的组成成分(“位”)从低到高(或从高到低)进行。每次是按记录关键字某一“位”的值将所有记录分配到相应的桶中,再按桶的编号依次将记录进行收集,最后得到一个有序序列。

常见的内部排序算法有:插入排序(insertion sorting)、希尔排序(Shell Sort)、选择排序(Selection sort)、堆排序(Heapsort)、冒泡排序(Bubble Sort)、快速排序(quick sort)、归并排序(Merge sort)、基数排序(Radix sort)。

下图列出了各种排序算法的时间复杂度、空间复杂度和稳定性情况。其中,空间复杂度仅列举了平均情况下的复杂度,由于希尔排序的时间复杂度依赖于增量函数,所以这里无法准确地给出其时间复杂度。

常用的八大排序算法时间复杂度和空间复杂度比较相关推荐

  1. 八大排序算法时间复杂度对比

    八大排序算法时间复杂度对比

  2. C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)

    排序算法分类 内部排序算法又分为基于比较的排序算法和不基于比较的排序算法,其分类如下: 比较排序:   直接插入排序    希尔排序 (插入)  冒泡排序     快速排序  (交换) 直接选择排序  ...

  3. 排序算法时间复杂度、空间复杂度、稳定性整理

    涉及排序算法包括:简单选择排序.直接插入排序.希尔排序.归并排序.冒泡排序.快速排序.堆排序.基数排序 时间复杂度:快些以nlogn的速度归队 此句表示时间复杂度为O(nlogn)的排序," ...

  4. 排序算法时间复杂度、空间复杂度、稳定性比较

    排序算法分类 排序算法比较表格填空 排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 :-----: :-–: :-–: :-–: 选择排序 :-----: :-–: :-–: ...

  5. 九大排序算法时间复杂度、空间复杂度、稳定性

    排序算法 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 冒泡排序 O(n²) O(n²) O(n) O(1) 稳定 直接选择排序 O(n²) O(n²) O(n) O(1) 不稳 ...

  6. (最全)数据结构各排序算法时间复杂度,空间复杂度,稳定性比较

    算法 时间复杂度 最好 ---------- 平均 --------- 最坏 直接插入排序 o(n)-------- o(n的平方) ----------- o(n的平方) 冒泡排序 o(n)---- ...

  7. 七、排序算法时间复杂度和空间复杂度介绍

    文章目录 一.排序算法的介绍 二.排序的分类 三.算法的时间复杂度 3.1 度量一个程序(算法)执行时间的两种方法 3.2 时间频度 3.3 时间复杂度 3.4 常见时间复杂度 3.5 平均时间复杂度 ...

  8. 常见排序算法时间复杂度和空间复杂度

    快速排序时间复杂度: 可以看这个视频视频 https://www.bilibili.com/video/BV1xb411T7dN?spm_id_from=333.337.search-card.all ...

  9. 10大排序算法时间复杂度和空间复杂度总结

    中文名称 英文名称 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 选择排序 Selection n2 n2 n2 1 不稳 冒泡排序 Bubble n2 n2 n 1 稳 插入排 ...

最新文章

  1. 苹果6尺寸_小屏+刘海被安卓阵营抛弃,苹果却玩出了花
  2. linux 显示文字在桌面背景,Linux下Xwindow的字体配置(所谓的字体美化)
  3. 得罪前女友到底有多可怕?
  4. java判断读到末尾_IO流如何判断读取到了流的结尾,程序中以-1来判断,是流中写入一个EOF表示流结束吗,底层实现呢?...
  5. Leetcode--49. 字母异味词分组
  6. 个位数统计(java)
  7. mysql order by
  8. 【POJ 1456】Supermarket【并查集】
  9. Android端公司通讯录开发与实现(一)
  10. python做网络图_使用Python的networkx绘制精美网络图教程
  11. Premiere cs6导出MP4格式视频
  12. 强力推荐—20款免费备份文件软件
  13. 虚拟现实、增强现实与全息投影的区别
  14. html结构内容拾忆
  15. python中copy的使用
  16. 数学基础:斜率、正切与 math.tan()
  17. 1319. 移棋子游戏(sg+图论(移棋子)邻接表)
  18. sas table将缺失值计入百分比_两种SAS代码实现变量的缺失值频数及占比
  19. 京东搜索引擎技术-Elasticsearch快速入门
  20. MIUI V5 移植到Wave---01

热门文章

  1. int *p = a、p = a、*p = a的正确理解
  2. 浅析智能网联产业发展与变化趋势
  3. Java程序员们值得一看的好书推荐
  4. 宇宙尽头是铁岭,互联网尽头是贷款
  5. 用python刷PAT【小结1】
  6. Java--创建窗口和程序片
  7. python常用命令参考手册_Python基础#常用命令和函数
  8. HTML小游戏5 —— 水果忍者(附完整源码)
  9. 小姐姐拯救计划之我的群晖NAS会内网穿透nps篇
  10. UltraISO使用步步通