PHP 快速排序

function quickSort(&$arr, $left=NULL, $right=NULL) {
    if($left===NULL) $left = 0;
    if($right===NULL) $right = count($arr)-1;

    if ($left < $right) {
        $parindex = partition($arr, $left, $right);
        quickSort($arr, $left, $parindex-1);
        quickSort($arr, $parindex+1, $right);
    }
    return $arr;
};

function partition(&$arr, $left, $right) {
    $pivot = $left;
    $index = $pivot + 1;

    for ($i=$index; $i<=$right; $i++)
    {
        if($arr[$i] < $arr[$pivot])
        {
            swap($arr, $i, $index);
            $index++;
        }
    }
    swap($arr, $pivot, $index-1);
    return $index-1;
}

function swap(&$arr, $i, $j)
{
    $temp = $arr[$i];
    $arr[$i] = $arr[$j];
    $arr[$j] = $temp;
    return $arr;
}

$arr = [5,1,8,6,4,3,9,7,2,0];
quickSort($arr);
var_dump(json_encode($arr));

评论已关闭。