1. 程式人生 > >php常見算法

php常見算法

function cti 選擇 控制 它的 spa 尋找 count 數列

1、冒泡排序

冒泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它重復地走訪過要排序的數列,依次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

function bubbleSort ($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、選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩余未排序元素中繼續尋找最小元素,然後放到排序序列末尾。以此類推,直到所有元素均排序完畢。


//實現思路 雙重循環完成,外層控制輪數,當前的最小值。內層 控制的比較次數
    function select_sort($arr)
    {
        //$i 當前最小值的位置, 需要參與比較的元素
        for ($i = 0, $len = count($arr); $i < $len - 1; $i++) {
            //先假設最小的值的位置
            $p = $i;
            //$j 當前都需要和哪些元素比較,$i 後邊的。
            for ($j = $i + 1; $j < $len; $j++) {
                //$arr[$p] 是 當前已知的最小值
                if ($arr[$p] > $arr[$j]) {
                    //比較,發現更小的,記錄下最小值的位置;並且在下次比較時,應該采用已知的最小值進行比較。
                    $p = $j;
                }
            }
            //已經確定了當前的最小值的位置,保存到$p中。
            //如果發現 最小值的位置與當前假設的位置$i不同,則位置互換即可
            if ($p != $i) {
                $tmp = $arr[$p];
                $arr[$p] = $arr[$i];
                $arr[$i] = $tmp;
            }
        }
        //返回最終結果
        return $arr;
    }


php常見算法