冒泡排序算法的原理是:比较两个相邻的元素,将值大的元素交换到右边。
举例说明,$arr = [10,5,3],数组长度为3,共2趟。
第一趟,比较2( 3-1 )次,第1次,10与5比较,交换,[5,10,3];第2次,10与3比较,交换,[5,3,10]。
第二趟,比较1( 3-2 )次,第1次,5与3比较,交换,[3,5,10],结束。
N个数字要排序,总共进行N-1趟排序,每i趟的排序比较次数为(N-i)次,每进行一趟排序,就会少比较一次。
双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。
function bubbleSort($arr) {
$len = count($arr);
for ($i=0; $i<$len-1; $i++) {
for ($j=$len-1; $j>$i; $j--) {
// 右边小于左边交换位置
if ($arr[$j] < $arr[$j-1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $temp;
}
}
}
return $arr;
}