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));

 

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