php算法

1.直接插入算法

原理: 將一個(gè)記錄插入到已排序好的有序表中,從而得到一個(gè)新,記錄數(shù)增1的有序表。即:先將序列的第1個(gè)記錄看成是一個(gè)有序的子序列,然后從第2個(gè)記錄逐個(gè)進(jìn)行插入,直至整個(gè)序列有序?yàn)橹埂?/p>

//方法一
/**
* @param $arr 需排序的數(shù)組
*/
function insert_sort($arr)
{
    $count = count($arr);
    for($i =0; $i<$count; $i++){ 
        for($j=1; $j<($count-$i); $j++){
            if($arr[$j-1] > $arr[$j]){
                 $temp = $arr[$j-1];
                 $arr[$j-1] = $arr[$j];
                  $arr[$j] = $temp;
            }
        }
    }
 return $arr;
}

//方法二
    function insert_sort($arr){
        for ($i = 0; $i < count($arr); $i++){
            $j = 1;
            while($j < count($arr)){
                if( $arr[$j-1]> $arr[$j]){
                 $temp = $arr[$j-1];
                 $arr[$j-1] = $arr[$j];
                 $arr[$j] = $temp;
                }
                $j++;
            }
        }
        return $arr;
    }

2.希爾排序算法

原理: 希爾排序是把記錄按下標(biāo)的一定增量分組,對(duì)每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關(guān)鍵詞越來越多,當(dāng)增量減至1時(shí),整個(gè)文件恰被分成一組,算法便終止。

    23 , 56 , 10 , 5 , 98 , 21 , 4 , 9 , 95 , 15 
    | -----------------------|
          | -------------------- |
               | ------------------- |
                   | ------------------- |
                        | ------------------- |
    21 , 4 , 9 , 5 , 15 , 23 , 56 , 10 , 95 , 98
    | -----------|--------------|-------------|  
         | -----------|------------| 
             | -----------|--------------| 
    5 , 4 , 9 , 21 , 10 , 23 , 56 , 15 , 95 , 98

//相當(dāng)于是直接插入算法    
function shell_sort($arr) {
    if(!is_array($arr)) return;
    $n = count($arr);
    for($times=floor($n/2);$times>0;$times=floor($times/2)){
        
        for($i = $times;$i<$n;$i++){
          for($j = $times;$j<=($n-$i) && $j>=0;$j+=$times){
            if($arr[$j-$times]>$arr[$j]){
                $temp = $arr[$j-$times];
                $arr[$j-$times] = $arr[$j];
                $arr[$j] =$temp ;
            }
        }  
        }
    }
    return $arr;
}

3.直接選擇排序算法

原理:

timg.jpg

    function select_sort($arr){
        for($i = 0; $i < count($arr); $i++){
            $key = $arr[$i];
            $n = $i;
            for($j = $i+1; $j < count($arr); $j++){
                if($key  > $arr[$j]){
                    $key  = $arr[$j];
                    $n = $j;
                }
            }
            $arr[$n] = $arr[$i];
            $arr[$i] = $key;
        }
        return $arr;
    }

4.堆排序算法

原理:

5.冒泡排序算法

原理:

        //冒泡排序
        function mopao_sort($arr){
           $n= count($arr);
           for($i=0;$i<$n;$i++){
               for($j=0;$j<$n-1;$j++){
                if($arr[$j]>$arr[$j+1])   {
                     $c = $j;
                    $temp = $arr[$j+1];
                    $arr[$j+1] = $arr[$c];
                    $arr[$c] = $temp;
                }else{
                     $c = $j+1;
                }
            } 
           }
           return $arr; 
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,298評(píng)論 0 52
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    閑云清煙閱讀 819評(píng)論 0 6
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個(gè)記錄插入到已排序好...
    依依玖玥閱讀 1,348評(píng)論 0 2
  • 時(shí)間, 如流水 , ...
    時(shí)間已逝真情不變閱讀 179評(píng)論 2 3
  • ”前往武鳴,里建方向的旅客請(qǐng)到4號(hào)門檢票上車,車輛馬上就要發(fā)車了,謝謝!” 我騰地站起來,那一排藍(lán)色塑料椅只剩他一...
    幾米和兔子閱讀 374評(píng)論 0 1

友情鏈接更多精彩內(nèi)容