PHP实现快速排序法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$arr = array(1,43,54,62,21,66,32,78,36,76,39);

// 快速排序法
function quick_sort($arr)
{
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }

    $base_num = $arr[0];
    $l_arr    = array();
    $r_arr    = array();

    for ($i=1; $i < $length; $i++) {
        if ($base_num > $arr[$i]) {
            $l_arr[] = $arr[$i];
        } else {
            $r_arr[] = $arr[$i];
        }
    }

    $l_arr = quick_sort($l_arr);
    $r_arr = quick_sort($r_arr);

    return array_merge($l_arr, array($base_num), $r_arr);
}

$res = quick_sort($arr);

echo '<pre>';
var_dump($res);
echo '<pre>';