码迷,mamicode.com
首页 > 编程语言 > 详细

排序之快速排序

时间:2014-12-09 19:16:04      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   on   div   

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

代码:

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

 

排序之快速排序

标签:style   blog   io   ar   color   sp   for   on   div   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!