快速排序PHP实现

来源:互联网 发布:java源代码怎么运行 编辑:程序博客网 时间:2024/05/22 23:42
/** * * 快速排序:不稳定,时间复杂度 最理想 O(nlogn) 最差时间O(n^2) * 快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后, * 使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置, * 而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小, * 右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。 * @param array $arr * @return array */function fastSort(array $arr){    if(count($arr) > 1){        $num = $arr[0];        $arrSmall = [];        $arrBig = [];        foreach ($arr as $item){            if($item>$num){                $arrBig[] = $item;            }elseif($item<$num){                $arrSmall[] = $item;            }        }        $arrSmall = fastSort($arrSmall);        $arrBig = fastSort($arrBig);        $arr = array_merge($arrSmall,[$num],$arrBig);    }else{        return $arr;    }    return $arr;}
0 0
原创粉丝点击