php快速排序算法的实现

$arr = [2,34,1,56,3,33,33,3,24,78,12];
function qsort($arr){//问题重复的数字不会被排序
    $l = count($arr);
    if ($l <= 1){
        return $arr;
    }
    $center = floor($l / 2) - 1;//到这里$l最小都为二,用远取不到0,所以要减一
    $m = $arr[$center];
    $f = $b = [];
    foreach($arr as $k => $v){
    	if($k==$center){
            continue;//不跟自己比较,跳出本次循环,否则会死循环
		}
        if ($v <= $m){
            $f[] = $v;
        }elseif ($v > $m){
            $b[] = $v;
        }
    }
    $b[] = $m;
    return array_merge(qsort($f), qsort($b));
}
echo "<pre>";
print_r(qsort($arr));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章