PHP实现快速排序算法相关案例

<?php
/**
 * 快速排序 --主要运用递归, 先把一个数找准位置,然后再递归把左右两边的数都找准位置
 */
function QSort($a= []){
    $nCount = count($a);
    if(($nCount) < 1){
        return $a;
    }
    // 一般默认找最左边的为起始点。
    $nTarget = $a[0];
    $aLeft   = $aRight = [];
    //从起始点后面选第一个开始
    for($i=1; $i<$nCount; $i++){
        if($a[$i] >= $nTarget){
            // 从大到下
            $aLeft[]   = $a[$i];
        }else{
            $aRight[]  = $a[$i];
        }
    }
    // 排完一次后,递归调用此方法,让左边和右边排序。
    $aLeft = QSort($aLeft);
    $aRight= QSort($aRight);
    return array_merge($aLeft,[$nTarget], $aRight);
}

$a = [120,2,500,3,34,1,700];
var_dump(QSort($a));

 

上一篇:C/C++中的排序和查找


下一篇:C++ 排序函数 sort(),qsort()的用法