php 快速排序

快速排序是以其中一个数为比较标准,其他比较的数分块处理,应用递归按相同想法处理数据

比如:4 3 6 2 1 7 8

以4为比较对象 排序为 3 2 1 4 6 7 8

左边为 3 2 1 右边 为 6 7 8

左右两边再次分块排序 分别为 2 1 36 7 8  然后 2 1 和 7 8 再次排序

//快速排序
$arr_test = array(4,2,9,3,6,7,1,5,4,5,'a','d','c','b','A','B','D','C','a');
function fastSort($sortarr){
    if(count($sortarr) <= 1) {
        return $sortarr;
    }
    $start = $sortarr[0];
    $middle = array();
    $left = array();
    $right = array();
    foreach($sortarr as $key => $val){
        if(ord($val) > ord($start)) {
            array_push($right,$val);
        } elseif(ord($val) < ord($start)) {
            array_push($left,$val);
        } else {
            array_push($middle,$val);
        }    
    }
    $left = fastSort($left);
    $right = fastSort($right);

    return array_merge($left,$middle,$right); 
}
$aaa = fastSort($arr_test);
var_dump($aaa);

 

posted on 2017-01-02 20:34  pytown  阅读(96)  评论(0编辑  收藏  举报

导航