PHP

用PHP编写递归排序算法:快速排序和归并排序

小樊
82
2024-04-26 20:02:55
栏目: 编程语言

快速排序算法的PHP实现:

function quickSort($arr){
    $length = count($arr);
    
    if($length <= 1){
        return $arr;
    }
    
    $pivot = $arr[0];
    $left = [];
    $right = [];
    
    for($i=1; $i<$length; $i++){
        if($arr[$i] < $pivot){
            $left[] = $arr[$i];
        }else{
            $right[] = $arr[$i];
        }
    }
    
    return array_merge(quickSort($left), [$pivot], quickSort($right));
}

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

print_r($sortedArr);

归并排序算法的PHP实现:

function mergeSort($arr){
    $length = count($arr);
    
    if($length <= 1){
        return $arr;
    }
    
    $mid = (int)($length / 2);
    
    $left = array_slice($arr, 0, $mid);
    $right = array_slice($arr, $mid);
    
    $left = mergeSort($left);
    $right = mergeSort($right);
    
    return merge($left, $right);
}

function merge($left, $right){
    $result = [];
    
    while(count($left) > 0 && count($right) > 0){
        if($left[0] < $right[0]){
            array_push($result, array_shift($left));
        }else{
            array_push($result, array_shift($right));
        }
    }
    
    while(count($left) > 0){
        array_push($result, array_shift($left));
    }
    
    while(count($right) > 0){
        array_push($result, array_shift($right));
    }
    
    return $result;
}

$arr = [3, 6, 8, 10, 1, 2, 1];
$sortedArr = mergeSort($arr);

print_r($sortedArr);

0
看了该问题的人还看了