Blogger Information
Blog 2
fans 4
comment 0
visits 1497
Related recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
快速排序
亚连的博客
Original
730 people have browsed it

基本思想:在数组中挑出一个元素(多为第一个)作为标尺,扫描一遍数组将比标尺小的元素排在标尺之前,将所有比标尺大的元素排在标尺之后,通过递归将各子序列分别划分为更小的序列直到所有的序列顺序一致。

<?php
//快速排序
function quick_sort($arr)
{
    //先判断是否需要继续进行
    $length = count($arr);
    if($length <= 1)
    {
        return $arr;
    }
    $base_num = $arr[0];//选择一个标尺 选择第一个元素
    
    //初始化两个数组
    $left_array = array();//小于标尺的
    $right_array = array();//大于标尺的
    
    for($i=1; $i<$length; $i++)
    {   
        //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
        if($base_num > $arr[$i])
        {
            //放入左边数组
            $left_array[] = $arr[$i];
        }
        else
        {
            //放入右边
            $right_array[] = $arr[$i];
        }
    }
    //再分别对 左边 和 右边的数组进行相同的排序处理方式
    //递归调用这个函数,并记录结果
    $left_array = quick_sort($left_array);
    $right_array = quick_sort($right_array);
    
    //合并左边 标尺 右边
    return array_merge($left_array, array($base_num), $right_array);
}
$arr = array(3,1,2);
var_dump(quick_sort($arr));
?>


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post