rokevin
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
  • 排序算法

  • 术语解释
  • 稳定性
    • 稳定的排序
    • 不稳定的排序
    • 不实用的排序
  • 不使用第三个变量交换数字
  • 资料

排序算法

术语解释

1. 稳定排序

如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。

2. 非稳定排序

如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。

3. 原地排序

原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。

4. 非原地排序

需要利用额外的数组来辅助排序。

5. 时间复杂度

一个算法执行所消耗的时间。

6. 空间复杂度

运行完一个算法所需的内存大小。

分类算法
交换排序冒泡排序 鸡尾酒排序 奇偶排序 梳排序 侏儒排序 臭皮匠排序 Bogo排序
选择排序选择排序 堆排序 平滑排序 笛卡尔树排序 锦标赛排序 圈排序 弱堆排序
插入排序插入排序 希尔排序 伸展排序 二叉查找树排序图书馆排序 耐心排序
归并排序归并排序 梯级归并排序 振荡归并排序 多相归并排序
分布排序桶排序 计数排序 基数排序 美国旗帜排序 珠排序 爆炸排序 比较计数排序 插值排序 鸽巢排序相邻图排序 闪电排序
并发排序双调排序器 Batcher归并网络 两两排序网络
混合排序块排序 Tim排序 内省排序 Spread排序 归并插入排序
其他拓扑排序 煎饼排序 意粉排序

稳定性

稳定的排序

  • 冒泡排序(bubble sort)—
  • 插入排序(insertion sort)—
  • 归并排序(merge sort)—;需要额外空间
  • 基数排序(radix sort)—;需要额外空间
  • 计数排序(counting.md sort)—;需要额外空间
  • 桶排序(bucket sort)—;需要额外空间
  • 鸡尾酒排序(cocktail sort)—
  • 原地归并排序— 如果使用最佳的现在版本
  • 二叉排序树排序(binary tree sort)— 期望时间;最坏时间;额外空间
  • 鸽巢排序(pigeonhole sort)—;需要额外空间
  • 侏儒排序(gnome sort)—
  • 图书馆排序(library sort)— 期望时间;最坏时间;需要额外空间
  • 块排序(block sort)—

不稳定的排序

  • 选择排序(selection sort)—
  • 快速排序(quick sort)—期望时间,最坏情况;对于大的、随机数列表一般相信是最快的已知排序
  • 希尔排序(shell sort)—如果使用最佳的现在版本
  • 堆排序(heap sort)—
  • 克洛弗排序(Clover sort)—期望时间,最坏情况[来源请求]
  • 梳排序—
  • 平滑排序(smooth sort)—
  • 内省排序(introsort)—
  • 耐心排序(patience sort)—最坏情况时间,需要额外的空间,也需要找到最长的递增子序列(longest increasing subsequence)

不实用的排序

  • Bogo排序— ,最坏的情况下期望时间为无穷。
  • Stupid排序—;递归版本需要额外存储器
  • 珠排序(bead sort)— 或 ,但需要特别的硬件
  • 煎饼排序—,但需要特别的硬件
  • 臭皮匠排序(stooge sort)算法简单,但需要约的时间

不使用第三个变量交换数字

// 使用第三个变量

temp = n
n = m
m = temp

// 不使用第三个变量

m = m + n
n = m - n
m = m - n

m ^= n
n ^= m
m ^= n

资料

基数排序、桶排序和计数排序的区别
Visualizing Algorithms
超详细十大经典排序算法总结
排序算法 wiki
十大经典排序算法
十大经典排序算法
十大经典排序算法,看这篇就够了
十大排序算法总结 内部排序
这或许是东半球讲十大排序算法最好的一篇文章
leetcode里的十大算法
BigO
十大经典排序算法 可参考待处理

最近更新:: 2025/9/27 00:43
Contributors: luokaiwen