PHP 冒泡算法示例

冒泡排序(Bubble Sort)分为若干趟进行,每一趟排序从前往后比较每两个相邻的元素的大小(因此一趟排序要比较n-1对位置相邻的数)并在每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟,这种情况在最小的数位于给定数列的最后面时发生)。事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1个数排序,这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置。这样下去,冒泡排序第i趟结束后后面i个数都已经到位了,第i+1趟实际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要小)。这相当于用数学归纳法证明了冒泡排序的正确性:实质与选择排序相同。

嗯,我是从大到小排的了。

function mv_max(&$a, &$b) {
	$tmp = 0;
	if($a<$b) {
		$tmp = $a;
		$a = $b;
		$b = $tmp;
	}
}

$arr_int = array(
	5, 3, 2, 6, 9, 8, 1, 7
);
print_r($arr_int);echo "<br />";
$arr_len = count($arr_int);
for($j=0; $j<$arr_len; $j++) {
for($i=0; $i<$arr_len-1; $i++) {
	mv_max($arr_int[$i], $arr_int[($i+1)]);
}
}
print_r($arr_int);
Array ( [0] => 5 [1] => 3 [2] => 2 [3] => 6 [4] => 9 [5] => 8 [6] => 1 [7] => 7 ) 
Array ( [0] => 9 [1] => 8 [2] => 7 [3] => 6 [4] => 5 [5] => 3 [6] => 2 [7] => 1 )

你可能感兴趣的:(PHP 冒泡算法示例)