常用排序算法小结:
排序算法 | 最差时间复杂度 | 最好时间复杂度 | 平均时间复杂度 | 稳定度 | 空间复杂度 |
---|---|---|---|---|---|
交换排序->冒泡排序 | O(N^2) | O(N) | O(N^2) | 稳定 | O(1) |
交换排序->快速排序 | O(N^2) | O(NlogN) | O(NlogN) | 不稳定 | O(logN)~O(N) |
选择排序->直接选择排序 | O(N^2) | O(N^2) | O(N^2) | 不稳定 | O(1) |
选择排序->堆排序 | O(NlogN) | O(NlogN) | O(NlogN) | 不稳定 | O(1) |
插入排序->直接插入排序 | O(N^2) | O(N) | O(N^2) | 稳定 | O(1) |
插入排序->希尔排序 | O(N^2) | O(N) | O(N^1.3) | 不稳定 | O(1) |
归并排序 | O(NlogN) | O(NlogN) | O(NlogN) | 稳定 | O(N) |
基数排序 | O(d(n+r)) | O(d(n+r)) | O(d(n+r)) | 稳定 | O(n+r)) |
注:
1. 基数排序,r代表关键字基数,d代表长度(位数),n代表关键字个数