最近一直想學(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信息