线性表的排序
各种排序算法性能比较
希尔排序需要根据步伐大小决定,基数排序需要r个队列,d趟分配和收集
算法种类 | 最好情况 | 平均情况 | 最坏情况 | 空间复杂度 | 是否稳定 |
---|---|---|---|---|---|
直接插入排序 | O(n) | O(n^2) | O(n^2) | O(1) | 是 |
冒泡排序 | O(n) | O(n^2) | O(n^2) | O(1) | 是 |
简单选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 否 |
希尔排序 | O(1) | 否 | |||
快速排序 | O(nlog2(n)) | O(nlog2(n)) | O(n^2) | O(nlog2(n)) | 否 |
堆排序 | O(nlog2(n)) | O(nlog2(n)) | O(nlog2(n)) | O(1) | 否 |
2-路归并排序 | O(nlog2(n)) | O(nlog2(n)) | O(nlog2(n)) | O(n) | 是 |
基数排序 | O(d(n+r)) | O(d(n+r)) | O(d(n+r)) | O(r) | 是 |
插入排序
直接插入排序
|
|
折半插入排序
|
|
希尔插入排序
|
|
交换排序
冒泡排序
|
|
快速排序
|
|
选择排序
简单选择排序
|
|
堆排序
|
|
归并排序
2-路归并排序的递归实现
|
|