当前位置:   article > 正文

快速排序(选定中轴值作为排序基准)_快速排序以中间数作为基准值

快速排序以中间数作为基准值

快速排序

通过一趟排序,将要排序的数据分2个部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法

对这两部分数据分别进行快速排序,整个排序过程可以用递归,以达到整个数据变成有序序列。

快排(选定一个中值为基准)的实现:

对序列进行处理的操作思想:选定一个中轴值pivot,将序列切分称为两个子序列

具体的实现方式:

1、定义两个指针l、r,其中,l的初值为left,r的初值为right ;

2、 确定此次划分的中轴值pivot = (left +right)/2 ;

3 、若l < r的时候进行while循环,来进行对序列的按值划分:

(1)对l指针,从左向右遍历,直至遇到一个数,使arr[l]<pivot不成立;

(2)对r指针,从右向左遍历,直至遇到一个数,使arr[r]<pivot不成立;

此时,如果l < r,就交换l、r对应的元素的值;否则,退出循环。

注:如果在某一次交换l、r对应的元素值之后,若发现arr[l] == pivot,应该将r指针向前移动一位;同理,如果在某一次交换l、r对应的元素值之后,发现arr[r] == pivot,也就是进行交换之前arr[l] == pivot,应该将l指针向后移动一位;

对序列的处理完成后,就可以开始进入递归模块。

但是,进行递归操作时,要注意,使向左递归 和 向右递归到的时候,他们的递归边界不能重合(因为可能容易发生栈溢出)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/499071
推荐阅读
相关标签
  

闽ICP备14008679号