面試-算法篇-PHP快速排序

function quickSort($arr)
{
    $count = count($arr);   //統計出數組的長度
    if ($count <= 1) { // 如果個數爲空或者1,則原樣返回數組
        return $arr;
    }
    $index = $arr[0]; // 把第一個元素作爲標記
    $left = [];    //定義一個左空數組
    $right = [];    //定義一個有空數組
    for ($i = 1; $i < $count; $i++) {   //從數組的第二數開始與第一個標記元素作比較
        if ($arr[$i] < $index) {        //如果小於第一個標記元素則放進left數組
            $left[] = $arr[$i];
        } else {                        //如果大於第一個標記元素則放進right數組
            $right[] = $arr[$i];
        }
    }
    $left  = quickSort($left);      //把left數組再看成一個新參數,再遞歸調用,執行以上的排序
    $right = quickSort($right);     //把right數組再看成一個新參數,再遞歸調用,執行以上的排序
    return array_merge($left, [$arr[0]], $right);   //最後把每一次的左數組、標記元素、右數組拼接成一個新數組
}
 
$arrtest=[12,43,54,33,23,14,44,53,10,3,56]; //測試數組
$res=quickSort($arrtest);     
var_dump($res);

D:\wamp64\www\test\kuaisupaixu.php:29:
array (size=11)
  0 => int 3
  1 => int 10
  2 => int 12
  3 => int 14
  4 => int 23
  5 => int 33
  6 => int 43
  7 => int 44
  8 => int 53
  9 => int 54
  10 => int 56

 

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