基于PHP實現(xiàn)的冒泡排序

最近一直想學(xué)習(xí)一些算法相關(guān)的基礎(chǔ)知識 鍛煉自己的思維能力
剛學(xué)習(xí)了第一個最基礎(chǔ)的冒泡排序 就拿來實踐下

理論部分:

冒泡排序是數(shù)列排序的一種算法 根據(jù)兩個相鄰值的大小排序 如果右邊的數(shù)字小于左邊的數(shù)字 則被交換 重復(fù)此操作 直到最后所有的數(shù)字都被排序

代碼部分:

$arr = array(1,3,6,2,9,7,5,8,4);
$arr = bubbleSort($arr);
print_r($arr);
function bubbleSort($arr)
{
    $len = count($arr); //獲得數(shù)組長度

    for($i=0;$i<$len;$i++){
    
        for($j=0;$j<$len-$i;$j++){
        
            if($j+1 < $len){  //這里是為了防止超出數(shù)組取值范圍 

                if($arr[$j] > $arr[$j+1]){    //進行排序 大的往后放
                    $temporary = $arr[$j];    //把當前變量保留
                    $arr[$j]   = $arr[$j+1];  //把小的放在前面
                    $arr[$j+1] = $temporary;  //再把大的放在后面
                }
            }
        }
      
    }
    return $arr;
}

輸出結(jié)果 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )

注意: 如果沒有 if($j+1 < $len)這個判斷 會提示 Notice: Undefined offset.... 這是因為超出了數(shù)組的取值范圍 因為$j循環(huán)最大為數(shù)組長度-1 當進行判斷左右數(shù)字比較時也就是$arr[$j+1]取值時就會觸發(fā)這個提示 所以這里加上這個判斷
或者可以在代碼頭部添加error_reporting(E_ALL || ~E_NOTICE) 更改錯誤級別
還可以在php.ini中設(shè)置錯誤級別 設(shè)置為:error_reporting = E_ALL & ~E_NOTICE 就可以不提示Notice信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,060評論 0 2
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,303評論 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,354評論 0 2
  • //禁用錯誤報告 error_reporting(0); //報告運行時錯誤 error_reporting(E_...
    沁心軒墨閱讀 812評論 1 1
  • 排序的基本概念 在計算機程序開發(fā)過程中,經(jīng)常需要一組數(shù)據(jù)元素(或記錄)按某個關(guān)鍵字進行排序,排序完成的序列可用于快...
    Jack921閱讀 1,571評論 1 4

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