首頁 > 後端開發 > php教程 > PHP四大基本排序演算法實例

PHP四大基本排序演算法實例

WBOY
發布: 2016-08-08 09:29:46
原創
1293 人瀏覽過

概述:PHP四大基本排序演算法包括:冒泡排序法,快速排序法,選擇排序法,插入排序法。

1. 冒泡排序

思路分析:在要排序的一組數中,對目前還未排好的序列,從前往後對相鄰的兩個數依次進行比較和調整,讓較大的數字往下沉,較小的往上冒。即,每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
程式碼實作:
$arr=array(1,43,54,62,21,66,32,78,36,76,39);  
function count($arr);
  //此層循環控制 需要冒泡的輪數
  for($i=1;$i  { //此層循環用來控制每輪 冒出一個數 需要比較的次數
    for($k=0;$k    {
       $tmp=$arr[$k+1];
            $arr[$k+1]=$arr[$k];
           }
  }
  return $arr ;
}


2. 選擇排序


程式碼實作:

function selectSort($arr) {

/雙循環完成,外層控制次數,內層控制輪碼count($arr);    for($i=0; $i                    for($j= $i+1; $j            //$arr[$p] 是目前已知的最小值
    //比較,發現更小的,記錄下最小值的位置;並且在下次比較時採用已知的最小值進行比較。
                $p = $j;
            目前的最小值的位置,儲存到$p。如果發現最小值的位置與目前假設的位置$i不同,則位置互換即可。
        if($p != $i) {
            ,$   $i];
            $arr[$i] = $tmp;
        }
    }
    //返回最終結果
    return $arr;
}


3.必須插入排序


順序分析把第n個數插到前面的有序數中,使得這n個數也是排好順序的。如此反覆循環,直到全部排好順序。

程式碼實作:
function insertSort($arr) {
    $len=count($arr); 
   $tmp = $arr [$i];
        //內層循環控制,並插入
        for($j=$i-1;$   ]) {
                //已發現插入的元素要小,且交換位置,後邊的元素與前面的元素互換
    
                $arr[$j] = $tmp;
            } else {
              
                break;
            ,
}


4.快速排序 
 

思路分析:選擇一個基準元素,通常選擇第一個元素或最後一個元素。透過一趟掃描,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素。此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞歸地排序劃分的兩部分。

程式碼實作:

function quickSort($arr) {    //先判斷是否需要繼續進行   {        return $arr ;    }
    //選擇第一個元素作為基準
    $base_num = $arr[0];
     
    $left_array = array();  //小於基準的
    $right_array = array();  //大於基準     if($base_num > $arr[$i]) {
            //在下使用左數
            
            //放入右側
            $right_array[] = $arr[$i] ;
        }
    }
    //對左邊和右邊的陣列進行相同的排序處理方式遞歸呼叫這個函數
  quick_sort($right_array);
    //合併
    return array_merge($left_array, array($base_num), $right_array);
}

參考資料:

http://www.evget.com/article/20155/2015/279203/artic http://www.evget.com/product/2605



以上就介紹了PHP四大基本排序演算法實例,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板