php快速排序算法怎么寫(xiě)

PHP
小億
88
2023-11-16 15:37:03

以下是一個(gè)使用PHP實(shí)現(xiàn)快速排序算法的示例:

function quickSort($arr) {
    // 如果數(shù)組只有一個(gè)元素或?yàn)榭眨苯臃祷?/span>
    if (count($arr) <= 1) {
        return $arr;
    }
    
    // 選擇一個(gè)基準(zhǔn)元素
    $pivot = $arr[0];
    
    // 將數(shù)組分為左右兩個(gè)子數(shù)組
    $left = [];
    $right = [];
    for ($i = 1; $i < count($arr); $i++) {
        if ($arr[$i] < $pivot) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }
    
    // 遞歸地對(duì)左右子數(shù)組進(jìn)行排序
    $left = quickSort($left);
    $right = quickSort($right);
    
    // 合并左右子數(shù)組和基準(zhǔn)元素
    return array_merge($left, [$pivot], $right);
}

// 測(cè)試示例
$arr = [5, 1, 8, 2, 9, 3];
$sortedArr = quickSort($arr);
print_r($sortedArr);

運(yùn)行以上代碼,將輸出 [1, 2, 3, 5, 8, 9],表示排序成功??焖倥判蛩惴ǖ幕舅枷胧峭ㄟ^(guò)分治法將數(shù)組分為兩個(gè)子數(shù)組,然后遞歸地對(duì)子數(shù)組進(jìn)行排序,最后合并子數(shù)組和基準(zhǔn)元素。在上述代碼中,我們選擇數(shù)組的第一個(gè)元素作為基準(zhǔn)元素,并將小于基準(zhǔn)元素的元素放在左子數(shù)組,大于基準(zhǔn)元素的元素放在右子數(shù)組,然后遞歸地對(duì)左右子數(shù)組進(jìn)行排序,最后將左子數(shù)組、基準(zhǔn)元素和右子數(shù)組合并起來(lái)。

0