php算法之快速排序

/**

 * 快速排序

 * 原理:

 *  快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。

 * 最差时间复杂度 O(n*n)

 * 最优时间复杂度 O(nlogn)

 * 平均时间复杂度 O(nlogn)

 */



function Qsort($array) {

    if (!is_array($array) || empty($array)) {

        return array();

    }

    $len = count($array);

    if($len <= 1){

        return $array;

    }

    $key = $array[0];

    $left = array();

    $right = array();

    for($i = 1; $i < $len; $i++) {

        if ($array[$i] <= $key) {

            $left[] = $array[$i];

        } else {

            $right[] = $array[$i];

        }

    }

    $left = Qsort($left);

    $right = Qsort($right);

    return array_merge($left, array($key), $right);

}


你可能感兴趣的:(快速排序)