首页 > 编程语言 > 详细

php排序笔记-快速排序

时间:2019-07-04 13:27:15      阅读:121      评论:0      收藏:0      [点我收藏+]

快速排序,

1、找一个基准值,

2、然后从右往左找比基准值小的数值,然后停止。从左往右找比基准值大的数值,然后停止。

3、将两个数值交换位置。然后两个哨兵继续移动。

4、直到两个哨兵相遇。再将基准值和相遇时的位置交换,其实这个位置就是基准值应该所在的位置。

5、通过递归再将左半部分和右半部分分别进行快速排序。

 

 public function  quick_sort(&$arr,$left,$right){

        if($left>$right){
            return ;
        }

        $tmp = $arr[$left];//tmp中存的数就是基准书

        $i=$left;
        $j = $right;

        while($i!=$j){
            //顺序很重要,要先从右往左找,找到比基准书小的数则跳出循环。
            while($arr[$j]>=$tmp && $i<$j){
                $j--;
            }
            //从左往右找比基准数大的数,找到后跳出循环。
            while($arr[$i]<=$tmp && $i<$j){
                $i++;
            }
            //将两个数进行交换。
            if($i<$j){
                $t = $arr[$i];
                $arr[$i]=$arr[$j];
                $arr[$j]=$t;
            }


        }

        //将基准书放到他应该所在的位置。
        $arr[$left]=$arr[$i];
        $arr[$i]=$tmp;

        //递归处理左边区域和右边区域
        $this->quick_sort($arr,$left,$i-1);

        $this->quick_sort($arr,$i+1,$right);


    }

 

php排序笔记-快速排序

原文:https://www.cnblogs.com/liyante/p/11131417.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!