数据结构和算法-经典排序算法总览

194 阅读1分钟

定义

排序算法是作用在数组之上的方法,目的是将乱序的数据按照升序或者逆序的规则排列好。

如何评价一个排序算法

评价排序算法,主要从三个维度进行分析

  1. 时间复杂度:包括最好、最坏、平均时间复杂度
  2. 空间复杂度:是否原地排序
  3. 稳定性:排序之后,相同元素原先的先后顺序保持不变

经典的排序算法

排序算法时间复杂度(平均)空间复杂度(平均)稳定性
冒泡排序O(n2)O(1)稳定
选择排序O(n2)O(1)不稳定
插入排序O(n2)O(1)稳定
归并排序O(nlogn)O(n)稳定
快速排序O(nlogn)O(1)不稳定
桶排序O(n)O(n)稳定
基数排序O(n)O(n)稳定
计数排序O(n)O(n)稳定

以时间复杂度为维度,可以分为三类

时间复杂度排序算法
O(n2)冒泡、选择、插入排序
O(nlogn)归并、快速排序
O(n)桶、基数、计数排序

以空间复杂度为维度,可以分为两类

空间复杂度排序算法
O(1)冒泡、选择、插入、快速排序
O(n)归并、桶、计数、基数排序

以稳定性为维度,可以分为两类

稳定性排序算法
不稳定选择、快速排序
稳定其他