排序方法之五:快速排序
Posted 大师兄编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序方法之五:快速排序相关的知识,希望对你有一定的参考价值。
![排序方法之五:快速排序](https://image.cha138.com/20210502/a64efa50fc564695b1ebff6059d4a522.jpg)
排序方法之快速排序
基于分治的思想,是冒泡排序的改进型。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
![排序方法之五:快速排序](https://image.cha138.com/20210502/9b2ecc0a2a774795bc480c7c10621f63.jpg)
1
算法讲解
设定原始序列{ 6 、1 、 2 、7 、9 、 3 、4 、 5 、10 、 8 }
第一步:将序列第一个元素作为基数,然后定义i、j两个哨兵分别从左边和右边进行嗅探。先从右边j开始向左嗅探。
![排序方法之五:快速排序](https://image.cha138.com/20210502/c148f94ce643445083e4da6e54bd2f7b.jpg)
第二步:哨兵j从右边依次向左嗅探,直到找到第一个比基数6小的元素然后停下,也就是停留在5的位置。这时候i从左边开始向右嗅探,直到找到第一个比基数大的元素7然后停下,也就是7的位置。这时候就要交换i和j对应的元素7和5。
![排序方法之五:快速排序](https://image.cha138.com/20210502/b09c4063c7844bfc974f1f9c7e5a3033.jpg)
得到结果:
![排序方法之五:快速排序](https://image.cha138.com/20210502/cc65f803493a40cebc6213a92ffd97a3.jpg)
第三步:哨兵j又开始从右向左嗅探,直到找到下一个比基数小的元素4然后停下,此时哨兵i又开始向右嗅探,直到找到下一个比基数大的元素9然后停下,这时候交换两个元素的位置。
![排序方法之五:快速排序](https://image.cha138.com/20210502/de4b10474c3a4ee2b62ded2d008089b2.jpg)
得到结果:
![排序方法之五:快速排序](https://image.cha138.com/20210502/aa7935883c60478ba7b45351e9a7113f.jpg)
第四步:哨兵j又开始向左嗅探,遇到下一个比基数小的元素3然后停下,哨兵i又向右嗅探。完了,这时候哨兵i和j相遇了,他们就准备私奔,但是私奔之前还有一件事要做,就是把这个元素和基数进行交换。
![排序方法之五:快速排序](https://image.cha138.com/20210502/a4e2be940464455e9e89dd7c2b010721.jpg)
![排序方法之五:快速排序](https://image.cha138.com/20210502/c73bb9f58f204ca8a185dbfc6b73b68b.jpg)
得到结果:
![排序方法之五:快速排序](https://image.cha138.com/20210502/e276ae2068ae4152844dd1c842586f96.jpg)
这时候,第一轮嗅探就算完成了,这个序列也被基数6分为了两个部分,左边都小于等于基数,右边都大于等于基数。但是排序还没完哦,我们继续将原来的序列,以6为分界点拆分成了两个序列,分别用上述方法再次进行排序,依次递归下去,直到序列不能被拆分就结束了哦。
2
代码实现
这里我们换用C语言代码实现一下
![排序方法之五:快速排序](https://image.cha138.com/20210502/8c86472836214811a3762ddaf97216f8.jpg)
怎么样?还不错吧,其实还挺好理解的,相信你一定行的。下面我们分析一下这个算法。
3
算法分析
1、时间复杂度:时间复杂度O(nlogn)
2、空间复杂度:快速排序使用递归,递归使用栈,因此它的空间复杂度为O(logn)。
3、稳定性:快速排序无法保证相等的元素的相对位置不变,因此它是不稳定的排序算法。
今天的快速排序到此就结束啦
或者加私人微信进微信群:bin18382734270
一百分服务,只为你十分满意
![排序方法之五:快速排序](https://image.cha138.com/20210502/a4011f081d554096bdb0ad618eca39c8.jpg)
![排序方法之五:快速排序](https://image.cha138.com/20210502/49d40dc9219147d194d4ecd778750ec7.jpg)
![排序方法之五:快速排序](https://image.cha138.com/20210502/fe08b9745dce495cb72ef911beb71638.jpg)
![排序方法之五:快速排序](https://image.cha138.com/20210502/c324b34c44db4025860bd2d85a3922de.jpg)
![排序方法之五:快速排序](https://image.cha138.com/20210502/e6ee460fc7fc4800a23987a29c0e0296.jpg)
我知道你在看哟
以上是关于排序方法之五:快速排序的主要内容,如果未能解决你的问题,请参考以下文章