这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
冒泡排序算法的运作如下:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
$arr=array(5,1,0,3,9,10,59,41,78,56,45,47,12,15,45,11);
bubbleSort($arr);
var_dump($arr);
// 从后往前冒
function bubbleSort(&$arr){
$size = count($arr);
for($i = 0; $i < $size; $i++){
for($j = $size - 1; $j > $i; $j--){
if($arr[$j-1] < $arr[$j]){
swap($arr,$j-1,$j);
}
}
}
}
// 从前往后冒
function bubbleSort(&$arr){
$size = count($arr);
for($i = 0; $i < $size; $i++){
for($j = 0; $j < $size - 1 - $i; $j++){
if($arr[$j] > $arr[$j+1]){
swap($arr,$j,$j+1);
}
}
}
}
function swap(&$arr,$a,$b){
# code...
$temp = $arr[$a];
$arr[$a] = $arr[$b];
$arr[$b] = $temp;
}
网友评论