排序算法复杂度

来源:http://www.runoob.com/w3cnote/sort-algorithm-summary.html

排序算法                平均时间复杂度
冒泡排序                O(n^2)
选择排序                O(n^2)
插入排序                O(n^2)

希尔排序                O(N*logN)
快速排序                O(N*logN)
归并排序                O(N*logN)
堆排序                  O(N*logN)

计数排序                O(N)
基数排序                O(N)

计数排序 O(N)和基数排序 O(N)的思想来自桶排序,放入桶中,再一次倒出

经典排序算法的空间复杂度
O(1):插入、选择、冒泡 、堆、希尔
O(logN)~O(N): 快速排序
O(N):归并排序
O(M):计数、基数 (M是桶的数量)

稳定性:相同的元素排序前后位置不变
稳定:冒泡、插入、归并、计数、基数、桶
不稳定:选择、快速、希尔、堆

工程上的排序:
1. 综合的
2. 数组较小时,插入排序
3. 数组较大时,快速排序(常量系数小)或其他O(logN)的排序

点赞