首页 > 编程语言 > 详细

排序之快速排序

时间:2014-12-09 19:13:00      阅读:240      评论:0      收藏:0      [点我收藏+]

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

代码:

<?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;
    }
?>

 

排序之快速排序

原文:http://www.cnblogs.com/fantasy01/p/4153707.html

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