• 技术文章 >后端开发 >php教程

    php数据结构与算法(PHP描述) 快速排序 quick sort_php技巧

    2016-05-17 09:10:39原创347
    复制代码 代码如下:

    /**
    * 快速排序 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," ==========================================
    ";
    echo "data : ",print_r($arrData),"
    ";
    echo "filter left: ",print_r($arrLeft),"
    ";
    echo "filter right: ",print_r($arrRight),"
    ";
    echo "return : ",print_r($arrResult),"
    ";

    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 "
    ";print_r($list); 
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:数据结构 算法 quick sort
    上一篇:让PHP更快的提供文件下载的代码_php技巧 下一篇:PHP sprintf() 函数的应用(定义和用法)_php技巧
    Web大前端开发直播班

    相关文章推荐

    • Zend Framework教程之Zend_Config_Xml用法分析_php实例• Zend Framework+smarty用法实例详解_php实例• mysql 线程有关问题,请问大侠们,顶者有分• 见鬼了,真的是百思不得其解,难道是bug?该怎么处理• 程序修改有关问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网