氣泡排序----php實現
阿新 • • 發佈:2018-11-08
原理
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
<?php /** * 氣泡排序 * 資料結構----------------陣列 * 最差時間複雜度-----------O(n^2) * 最優時間複雜度-----------O(n) * 平均時間複雜度-----------O(n^2) * 空間複雜度---------------O(1) * 穩定性------------------穩定 */ $arr = [1, 3, 34, 2, 32, 2, 78, -43, 53, -35, 0]; function BubbleSort($arr) { $length = count($arr); for ($i = 0; $i < $length - 1; $i++) { // 每次最大元素移到陣列最後 for ($j = 0; $j < $length - 1 - $i; $j++) { // 內部迴圈次數=陣列長度-已經排序好的個數-1 if ($arr[$j] > $arr[$j + 1]) { // 比較相鄰兩個元素,較大的後移 $t = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $t; } } } return $arr; } print_r(BubbleSort($arr));