1. 程式人生 > >php常見的一些基礎算法

php常見的一些基礎算法

++ 選擇排序 $max 選擇 cnblogs 數據 冒泡算法 pan style

1.冒泡算法

冒泡算法是將一個未排序的序列,從前往後對相鄰的兩個值依次進行對比和調整,大的值下沈,小的值上冒。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function bsort($arr){
    $len = count($arr);
    for($i=1;$i<$len;$i++){
        for($k=0;$k<$len-$i;$k++){
            if($arr[$k]>$arr[$k+1]){
                $tmp=$arr[$k+1];
                
$arr[$k+1]=$arr[$k]; $arr[$k]=$tmp; } } } return $arr; }

2.選擇排序

選擇排序是在一組未排序的序列中選出最小的一個數與第一個位置數據交換,在剩下的序列中選出第二小的一個數放在第二個位置,直到倒數第二個數字和倒數第一個數字比較為止。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function selectsort($arr){
    $len = count($arr);
    for($i=0;$i
<$len-1;$i++){ $mixm=$i; for($j=$i+1;$j<$len;$j++){ if($arr[$mixm]>$arr[$j]){ $mixm = $j; } if($mixm!=$i){ $tmp=$arr[$mixm]; $arr[$mixm]=$arr[$i]; $arr[$i]=$tmp; } } }
return $arr; }

3.插入排序

在要排序的一組數組中,假如前面的數已經排序好順序的,現在要將第n個數插入到已經排序的數組中,使得插入之後任然是有序的排序。如此循環,直到排好為止。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function insertsort($arr){
    $len = count($arr);
    for($i=1;$i<$len;$i++){
        $tmp=$arr[$i];
        for($j=$i-1;$j>=0;$j--){
            if($tmp<$arr[$j]){
                $arr[$j+1]=$arr[$j];
                $arr[$j]=$tmp;
            }else{
                break;
            }
        }
        
    }
    return $arr;
}

4.快速排序

選擇一個基準元素,通常選擇第一個元素或者最後一個元素。通過一趟掃描,將待排的序列分成兩個部分,一部分比基準元素小,另一部分比基準元素大,此時基準元素已經在其排好序列的正確位置,然後使用同樣的辦法遞歸的排序劃分的兩部分。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function quicksort($arr){
    $len = count($arr);
    if($len<=1){
        return $arr;
    }
    $base=$arr[0];
    $minArr=array();
    $maxArr=array();
    for($i=1;$i<$len;$i++){
        if($base>$arr[$i]){
            $minArr[]=$arr[$i];
        }else{
            $maxArr[]=$arr[$i];
        }
    }
    $minArr=quicksort($minArr);
    $maxArr=quicksort($maxArr);
    return array_merge($minArr,array($base),$maxArr);
}

php常見的一些基礎算法