php 快速排序

之前写冒泡,选择排序的算法。今天就抽空看看快速排序,快速排序先选择一个基数,将数组中的数据分别与这个基数对比。小于基数的放在一组,大于基数的放在一组。最后在递归对这两个数组继续排序。最后merge返回就是排序好的数据了。

function quick_sort(array $arr) {
    $length = count($arr);

    if ($length <= 1) return $arr;

    $leftArr = $rightArr = array();
    $baseValue = $arr[0];

    for ($i = 1; $i <= $length - 1; $i++) {
        if ($arr[$i] <= $baseValue)
            $leftArr[] = $arr[$i];
        else
            $rightArr[] = $arr[$i];
    }

    return array_merge(quick_sort($leftArr), array($baseValue), quick_sort($rightArr));
}

print_r(quick_sort(array(1,5,3,6,7,2)));

 

 

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>