快速排序(Quicksort)是对冒泡排序的一种改进。
此快速排序需要用到三个参数,基准数X,起始指针begin和末尾指针end.
基本思想(按照升序):
- 从一个数列中取出一个数作为基准数
- 分区的过程中,目的是将比基准数小的数放在基准数的左边,将比基准数大的数放在基准数的右边,直到起始指针大于等于末尾指针时结束排序,这样一轮排序之后,就保证了第一轮的排序.
- 重复此操作对基准数的左区间的数以及右区间的数.
举例:
第一步:
X=21, begin= 0,end =9
0 1 2 3 4 5 6 7 8 9
21 32 43 98 54 45 23 4 66 86
第二步:(开始排序)
从end开始从后往前比较,目的:找出比基准数X小的值,依次比较找到index=7的位置,将4与基准值21互换,此时begin=0,end=6,此时就将无序区间缩小,区间之外的就已经满足规则.
0 1 2 3 4 5 6 7 8 9
4 32 43 98 54 45 23 21 66 86
第三步:
从end开始从前往后比较,找出第一个比X值大的数,依次比较找到index=1的位置,将32与21交换,此时begin=2,end=6.
0 1 2 3 4 5 6 7 8 9
4 21 43 98 54 45 23 32 66 86
第四步:
从end开始从后往前比较,找到第二个比X值小的数,此时end=0,end<begin,结束第一轮比较.
码字不易,希望能帮助到大家,CT还会继续更新