欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP算法-快速排序 分治法 博客分类: PHP PHP算法排序快速排序分治法

程序员文章站 2024-03-19 12:29:34
...
/**
 * 快速排序 分治法
 * 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;
    }
}