PHP算法-快速排序 分治法

/**
 * 快速排序 分治法
 * 1 把小于指定数($key = $arr[0])的 放在左侧数组(left);大于$key 放在右侧数组
 * 2 合并 数组
 *
 * @param unknown $arr            
 */
function quick_sort($arr)
{
    $count = count($arr);
    if (count($arr) > 1) {
        $key = $arr[0];
        $left = [];
        $right = [];
        for ($i = 1; $i < $count; $i ++) {
            if ($arr[$i] <= $key) {
                $left[] = $arr[$i];
            } elseif ($arr[$i] > $key) {
                $right[] = $arr[$i];
            }
        }
        $left = quick_sort($left);
        $right = quick_sort($right);
        return array_merge($left, [
            $key
        ], $right);
    } else {
        return $arr;
    }
}

猜你喜欢

转载自erntoo.iteye.com/blog/2391825