跳转至

简介

定义

所谓排序就是将一个序列的元素,按照某种偏序关系,递增或递减的排列起来。

排序算法的分类

按排序方式

Image title

本章会将上述排序算法进行一一的介绍。

按数据存放位置

  • 内排序:数据元素放在内存中的排序。
  • 外排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能再内外存之间移动数据的排序。

排序性能

比较排序

时间复杂度 空间复杂度 稳定性
插入排序 \(O(n^2)\) \(O(1)\) 稳定
希尔排序 \(O(n\log^2{n})\) \(O(1)\) 不稳定
选择排序 \(O(n^2)\) \(O(1)\) 不稳定
堆排序 \(O(n\log{n})\) \(O(1)\) 不稳定
冒泡排序 \(O(n^2)\) \(O(1)\) 稳定
快速排序 \(O(n\log{n})\) \(O(n\log{n})\) 不稳定
归并排序 \(O(n\log{n})\) \(O(n)\) 稳定

非比较排序

时间复杂度 空间复杂度 稳定性
计数排序 \(O(n)\) \(O(n)\) 稳定
桶排序 \(O(n)\sim O(n^2)\) \(o(n)\) 稳定
基数排序 \(O(n\log{n})\) \(O(n)\) 稳定