快速排序法

快速排序不会直接获得最终结果,只会把比k大和比k小的数分到k的两边。(你能够想象一下i和j是两个机器人,数据就是大小不一的石头,先取走i前面的石头留出回旋的空间,而后他们轮流分别挑选比k大和比k小的石头扔给对面,最后在他们中间把取走的那块石头放回去,因而比这块石头大的全扔给了j那一边,小的全扔给了i那一边。只是此次运气好,扔完一次恰好排整齐。)为了获得最后结果,须要再次对下标2两边的数组分别执行此步骤,而后再分解数组,直到数组不能再分解为止(只有一个数据),才能获得正确结果。php

 

 

参考了百度百科web

 

php代码以下:数组

 function quickSort ($arr)
{
    if (count($arr) > 1) {
        $k = $arr[0];
        $x = array();
        $y = array();
        $_size = count($arr);
        for ($i = 1; $i < $_size; $i ++) {
            if ($arr[$i] <= $k) {
                $x[] = $arr[$i];
            } else {
                $y[] = $arr[$i];
            }
        }
        $x = quickSort($x);
        $y = quickSort($y);
        return array_merge($x, array($k), $y);
    } else {
        return $arr;
    }
}
相关文章
相关标签/搜索