空间复杂度
冒泡排序
- 缺点:每一次交换,逆序数只能减一或者不变。
- 稳定
- 对于n个元素,相邻元素均要比较,共有(n-1)次。经过一回合冒泡过程后,最大元素沉淀到最右位置。第二回合, 只剩下(n-1)个元素,只需要比较(n-2)次。依次类推,其他比较次数为(n-3),…,2,1. 所以总共比较次数为n(n-1)/2,而且是固定为这个数目.
- 改进之前,不管好差都是O(n^2)
- 改进之后:好:O(N) 差O(N^2)
选择排序
- 不稳定
- 比较次数总共为(n-1)+(n-2)+…+1=n(n-1)/2,且固定不变 好差都是O(n^2)
插入排序
- 稳定的
直接插入排序
二分插入排序
- 仅仅是减少了比较次数,更快找到插入位置。
while (low <= high)
{
mid = (low + high) / 2;
if (x[mid] <= temp)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
归并排序
- 稳定