排序二——交换排序
冒泡排序
从后往前(或者从前往后)两两比较,逆序则交换,每趟确定一个元素,且该元素下次不再交换。
空间复杂度:交换元素的时候用的,O(1)
时间复杂度:如果本趟元素没有发生交换,则说明已经有序。最好的情况下是 O(n),平均是 O(n2)。
稳定性:稳定
快速排序
思想:分治,重点在分。取一个pivot,通过一趟排序分成两部分,每趟确定一个元素。
时间:平均是 o(nlogn),最坏情况:基本有序。
空间效率:快速排序是递归的,需要借助一个递归工作栈来保存每层递归调用的信息,平均O(log2N)
时间复杂度:运行时间与划分是否对称有关。所以基本有序或者基本逆序,都是最好的情况。
优化:1)头尾中间三个元素取中间
2)规模较小时候,改用直接插入
稳定性:不稳定。