冒泡,选择,插入,快速排序:PHP四种基础算法(四)

编辑:逐风博客 2013-11-18 00:00:00 阅读热度:0

4.快速排序法

<?php
$arr = array(1,43,54,62,21,66,32,78,36,76,39);  
function quick_sort($arr) {
    //先判断是否需要继续进行
    $length = count($arr);
    if($length <= 1) {
        return $arr;
    }
    //如果没有返回,说明数组内的元素个数 多余1个,需要排序
    //选择一个标尺
    //选择第一个元素
    $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);
}
echo '<pre>';
var_dump(quick_sort($arr));
/*
array(11) {
  [0]=>
  int(1)
  [1]=>
  int(21)
  [2]=>
  int(32)
  [3]=>
  int(36)
  [4]=>
  int(39)
  [5]=>
  int(43)
  [6]=>
  int(54)
  [7]=>
  int(62)
  [8]=>
  int(66)
  [9]=>
  int(76)
  [10]=>
  int(78)
}
*/
?>

看完上述分享的四种基础算法后,不知读者们有没有发现,四种算法得出的结果都是一样;

这也说明,程序的编写方式、方案是多样化,适合自己的最实用;


PHP 检测是否 Ajax 请求
PHP之function_exists函数,检测函数禁用
逐风开发在线 逐风

懒惰:是这样一种品质,它使得你花大力气去避免消耗过多的精力。它敦促你写出节省体力的程序,同时别人也能利用它们。为此你会写出完善的文档,以免别人问你太多问题。