本文为个人排序算法思考笔记,目的在于要点记录而非详细论述,希望能给初学的朋友带来一些启发。
1.相较于冒泡排序,快速排序为什么快
我们直接比较一下冒泡和快排的排序过程:对于这样一个数组[6,1,2,7,9,3,4,5,10,8],快排的操作如下
1.选择一个数作为基准数,这里选择6
2.进行一次循环,将小于6的数放到左边,大于6的数放到右边
3.对两边的数组再各自选取一个基准数,再进行循环
4.使用递归重复上述步骤,数组长度为1时停止递归
(搬运一张图,侵删)
第一趟排序过后,顺序变为[3,1,2,5,4,6,9,7,10,8],那么在下一次的排序中,'6'左边的数,不会再和右边的数比较,而对于冒泡来说或直接选择/插入排序等暴力排序来说,每排一个数都需要和剩下的数进行一次比较,产生了很多无意义的比较
2.堆排序
待更新
3.归并排序
待更新