1. 程式人生 > >氣泡排序----php實現

氣泡排序----php實現

原理

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

<?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));