书写技术成长之路

排序算法(四) 快速排序

<?php

/**
 * quick sort
 */
function quick_sort($array) {
    $len = count($array);

    if ($len <= 1) {
        return $array;
    }

    $base = $array[0];
    $left_arr = $right_arr = [];

    for ($i=1; $i<$len; $i++) {
        if ($array[$i] <= $base) {
            $left_arr[] = $array[$i];
        } else {
            $right_arr[] = $array[$i];
        }
    }

    $left_arr= quick_sort($left_arr);
    $right_arr = quick_sort($right_arr);
    return array_merge($left_arr, array($base), $right_arr);
}

$arr = [10, 2, 6, 14, 26, 88, 36, 47, 22, 80, 92];
$result = quick_sort($arr);
print_r($result);