用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

php快速排序算法例子

2013-09-17 作者: 神马举报

[php]代码库

<?php
/**
 * 快速排序 quick sort
 * 
 **/

function sort_quick($arrData) {
    if(empty($arrData) || !is_array($arrData)) return false;

    $flag = $arrData[0];
    $len  = count($arrData) - 1;
    if($len == 0) return $arrData; // 如果只有一个数据的数组直接返回

    $arrLeft  = array();
    $arrRight = array();
    $len_l    = 0;
    $len_r    = 0;
    for($i = 1; $i <= $len;$i++) {
        if($arrData[$i] < $flag) {
            $arrLeft[$len_l]  = $arrData[$i]; // 小于的放左边
            $len_l++;
        } else {
            $arrRight[$len_r] = $arrData[$i]; // 大于等于的放右边
            $len_r++;
        } 
    }

    // 合并数组
    $arrResult = array();
    if($len_l) {
        $arrLeft = sort_quick($arrLeft);
        for($i = 0;$i <= $len_l - 1; $i++ ) {
            $arrResult[$i] = $arrLeft[$i]; 
        }
    }
    $arrResult[$len_l] = $flag;
    $len_l++;
    if($len_r) {
        $arrRight = sort_quick($arrRight);
        for($i = 0;$i <= $len_r - 1; $i++ ) {
            $arrResult[$len_l] = $arrRight[$i];
            $len_l++;
        }
    }
    echo "== ",$flag," ==========================================<br/>";
    echo "data        : ",print_r($arrData),"<br/>";
    echo "filter  left: ",print_r($arrLeft),"<br/>";
    echo "filter right: ",print_r($arrRight),"<br/>"; 
    echo "return      : ",print_r($arrResult),"<br/>"; 

    return $arrResult;
}
//$list = array(4,3,2,1,5,7,3,7);
$list = array(4,51,6,73,2,5,9,33,50,3,4,6,1,4,67);
$list = sort_quick($list);
echo "<pre>";print_r($list);


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...