博客列表 >快速排序

快速排序

亚连的博客
亚连的博客原创
2018年05月08日 10:49:32725浏览

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

<?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));
?>


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议