冒泡排序
连续的扫描序列,每次将当前序列的最大记录通过两两交换移动到序列的尾部
简单选择排序
连续的扫描序列,不断地从待排序记录中选择最小的记录放到已排序序列的后面
直接插入排序
将目标记录与前面已经排好序的序列从后往前逐个比较,寻找插入的位置
折半插入排序
寻找目标记录在已排序的序列中的位置时,可以采取折半查找(二分查找)的方法
希尔排序
先将整个待排序序列通过间隔h划分为多个子序列,分别对每个子序列进行直接插入排序;h递减(h>=1),重复以上划分和排序
小结
算法 |
时间复杂度 |
空间复杂度 |
稳定性 |
||
最坏 |
平均 |
最好 |
|||
冒泡排序 |
O(n^2) |
O(n^2) |
O(n) |
O(1) |
稳定 |
选择排序 |
O(n^2) |
O(n^2) |
O(n^2) |
O(1) |
不稳定 |
插入排序 |
O(n^2) |
O(n^2) |
O(n) |
O(1) |
稳定 |
希尔排序 |
O(n^1.3) |
O(1) |
不稳定 |
||
快速排序 |
O(n^2) |
O(nlogn) |
O(nlogn) |
O(logn) |
不稳定 |
堆排序 |
O(nlogn) |
O(nlogn) |
O(nlogn) |
O(1) |
不稳定 |