目录-入口-由此开始-大纲-总览-概括-枢纽-指导-指引-总领

相关概念:

记录:

一个数据元素称为一个记录, 一个记录通常有多个关键字

多种顺序

按照不同关键字可以排序出不同的序列

排序的稳定性:

对某个排序, 对key相等的记录之间的相对位置, 如果排序前后相对位置不变, 则称该排序为稳定排序, 否则为不稳定排序

排序的分类

按数据存储位置分类

  1. 内排序: 对内存中的记录进行排序
  2. 外排序: 对外部存储中的数据进行排序

按原理本质分类

  1. child::插入类排序
  2. child::交换类排序
  3. child::选择类排序
  4. child::归并类排序
  5. child::分配类排序

一些常用的排序算法

冒泡排序算法:

child::冒泡排序 算法

选择排序法:

child::选择排序法 算法

插入排序法:

child::直接插入排序 算法

希尔排序法

child::希尔排序法 算法

归并排序

child::归并排序 算法

快速排序

child::快速排序算法

堆排序

child::堆排序 算法

计数排序

child::计数排序算法

不常用的排序算法

排序算法总结

复杂度以及稳定性的比较

排序方法平均情况最好情况最坏情况空间稳定性
冒泡O(n²)O(n)O(n²)O(1)稳定
简单选择排序O(n²)O(n²)O(n²)O(1)不稳定
直接插入排序O(n²)O(n)O(n²)O(1)稳定
希尔排序O(nlogn) ~ O(n²)O(n1.5)O(n²)O(1)不稳定
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)稳定
快速排序O(nlogn)O(nlogn)O(n²)O(logn)~O(n)不稳定

常用的两种稳定排序算法:

  1. 插入排序
    1. 速度慢, 数据量小
  2. 归并排序
    1. 速度快, 数据量大

效率高的排序算法四大头:

  1. 希尔排序
  2. 堆排序
  3. 归并排序
    1. 稳定排序
  4. 快速排序