排序之快速排序

算法思想:采用分治法,首先确定一个元素作为参照,将所有比其小的元素都放到其左边,将所有比其大的元素都放到其右边,一趟快速排序,确定参照元素的最终位置,然后对最终位置两边的分别再采用如上做法,不断递归,最后排序完成。

代码:

<?php
    $arr = array(232,3,44,234,456,3432,289,12,43546,54,322,554,45,3435,34454,323,2323);
    function quickSort(&$arr, $low, $high)
    {
        if($low<$high)
        {
            $index = partion($arr, $low, $high);
            quickSort($arr, $low, $index-1);
            quickSort($arr, $index+1, $high);
        }
    }
    function partion(&$arr, $low, $high)
    {
        while($low<$high)
        {
            $temp = $arr[$low];
            while($low<$high && $arr[$high]>$temp) 
                $high--; 
            $arr[$low] = $arr[$high];
            while($low<$high && $arr[$low]<$temp) 
                $low++;
            $arr[$high] = $arr[$low];

            $arr[$low] = $temp;
        }

        return $low;
    }
    quickSort($arr, 0, count($arr)-1);
    foreach ($arr as $val) {
        echo " ".$val;
    }
?>
原文地址:https://www.cnblogs.com/fantasy01/p/4153707.html