快速排序

//待排序数组
$arr = array(7,3,8,6,4,2,9,5,1);
//函数实现快速排序
function quickSort($arr)
{
    //判断参数是否是一个数组
    if(!is_array($arr)) return false;
    //递归出口:数组长度为1,直接返回数组
    $length = count($arr);
    if($length <= 1) return $arr;
    //数组元素有多个,则定义两个空数组
    $left = $right = array();
    //使用for循环进行遍历,把第一个元素当做比较的对象
    for($i = 1; $i < $length; $i++)
    {
        //判断当前元素的大小
        if($arr[$i] < $arr[0]){
            $left[] = $arr[$i];
        }else{
            $right[] = $arr[$i];
        }
    }
    //递归调用
    $left = quickSort($left);
    $right = quickSort($right);
    //将所有的结果合并
    return array_merge($left,array($arr[0]),$right);
}
//调用
print_r(quickSort($arr));
//输出
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

Leave comment

Your email address will not be published. Required fields are marked with *.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据