php怎么實(shí)現(xiàn)快速排序

PHP
小億
98
2024-03-15 17:11:53
欄目: 編程語言

快速排序是一種基于分治思想的排序算法,可以用PHP實(shí)現(xiàn)如下:

function quickSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    
    $pivot_key = floor($length / 2);
    $pivot = $arr[$pivot_key];
    $left = $right = [];
    
    foreach ($arr as $key => $value) {
        if ($key == $pivot_key) {
            continue;
        }
        
        if ($value < $pivot) {
            $left[] = $value;
        } else {
            $right[] = $value;
        }
    }
    
    return array_merge(quickSort($left), [$pivot], quickSort($right));
}

$arr = [3, 6, 8, 10, 1, 2, 1];
$result = quickSort($arr);
var_dump($result);

在上面的代碼中,quickSort函數(shù)實(shí)現(xiàn)了快速排序算法。首先判斷數(shù)組長(zhǎng)度是否小于等于1,如果是則直接返回?cái)?shù)組。然后選擇一個(gè)基準(zhǔn)值(pivot),將小于基準(zhǔn)值的元素放在左邊,大于等于基準(zhǔn)值的元素放在右邊,再遞歸地對(duì)左右兩部分?jǐn)?shù)組進(jìn)行排序,最后合并左右兩部分?jǐn)?shù)組并返回排序后的結(jié)果。

0