詳細實現和原理已經放在了代碼裏了, 歡迎大家在評論區指正!
/*
* 冒泡排序(以升序爲例)
* 1. 將數組中左右相鄰的兩個數進行比較,數值大的放在右邊
* 2. 這樣一趟下來,整個數組中最大的就排在了最右邊,所以下一遍比較的時候就不用比較最後一個元素,簡言之可以少比較一次
* 3. 那麼由此可推出,整體需要遍歷數組長度length-1次,每一行比較length-i-1次
* 4. 可以得出冒泡排序的時間複雜度爲O(n^2)
* **/
function BubbleSort($arr){
$len = count($arr);
for($i = 0;$i < $len-1;$i++){
for($j = 0;$j < $len-$i-1;$j++){
if($arr[$j] > $arr[$j+1]){
$swap = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $swap;
}
}
}
return $arr;
}
$arr = array(6,2,4,3,5,7,9,1,10);
print_r(BubbleSort($arr));