一.昨天说了冒泡排序,今天看看一个高效的排序方法
二.排序思想:(从小到大排序)
分析:
1、找基准(一般是以中间项为基准)
2、遍历数组,小于基准的放在left,大于基准的放在right
3、递归
三.解析
(1)随便找一个数作为基准 (我是用0位置的数作为基准),我在这里找的是数组的中间值,然后从右向左开始找比它小的数,如果找到就交换位置.第一次的中间值为4;
(2)然后将基准值删掉,这时数组中就剩[3,2,5,8,6,7,6,9];
(3)将比基准值小的放在数组left中,left为[3,2];比基准值大的放在数组right中,right为[5,8,7,6,9];最后再将左右部分加上基准元素进行连接;
(4)接下来,将左边的数组也进行快速排序,也就是重复上述步骤,一直到一个数组只含有一个元素,也就是长度为1,返回;将左边的数组也进行快速排序,也就是重复上述步骤,一直到一个数组只含有一个元素,也就是长度为1,返回.
这样就排序完毕,可以得到最后的排序好的结果.
四.比较之后的结果:
五.复杂度
时间复杂度:
O(nlog₂n)
空间复杂度:
最优的情况下空间复杂度为:O(logn) ;每一次都平分数组的情况
最差的情况下空间复杂度为:O( n ) ;退化为冒泡排序的情况
性能:
快速排序是不稳定算法
如有错误,欢迎大家指正!