标签:右边 那么 元素 C语言 序列 Pivot 排序 快速
快速排序
排序思想
1. 选定Pivot中心轴
2. 将大于Pivot的数字放在Pivot的右边
3. 将小于Pivot的数字放在Pivot的左边
4. 分别对左右子序列(此时有左右2个子表),重复前三步操作。
5.注意:第4步中,如果左右子表元素 == 1,那就不用动,证明排序完了。
来个动画演示
【引用网络上图源:@五分钟学算法 之 快速排序】
可以看到,那个Pivot一般选取最第一个或最后一个元素,还有2个标记 l 和 r,如果发生了改变,那么它们会交替移动,直到碰在一起(产生了爱情...)
简化成3个元素:
序列: 3 2 1:
首先我们取1为Pivot,然后l 和 r 指向了 3 和 1;
然后3 和 1对比,3 > 1,那么 在1的右边,所以3 移动到 r 位:
序列: _ 2 3
然后 因为操作了,移动R 【指向2】
然后 2 和 1对比,2 > 1, 所以要放在1的右边,那么本来就在1的右边,所以不用动,序列变成:
序列: _ 2 3
因为没用动,所以r继续移动,此时 r 和 l 相遇了,所以把1放在相遇的地点:序列变成:
序列: 1 2 3
那么 1 的左边是没有元素的,所以是排序成功,那么开始排序右边(2 和 3)
一样的按照上面重复,那么。。。。。。不多说
标签:右边,
那么,
元素,
C语言,
序列,
Pivot,
排序,
快速
From: https://www.cnblogs.com/bi-hu/p/16751427.html