Title:PHP冒泡排序算法Create:2018-05-24 ◊ :1104
:2018-05-25 01:34
: TabKey9 :0 :0
面试官说我根本不会冒泡排序,我非常羞愧当时把选择排序说成了冒泡排序!现在不会搞混了,以下是正确的冒泡排序算法、过程、效果展示。
function maopao($arr){
// 冒泡排序算法
// 第一层for循环,控制趟数,每一趟的目的将确定一个最大值,并把它放在当前趟数所对应的数组下标的位置
for ($i=0; $i < count($arr)-1; $i++) {
echo "<hr>第 ",$i+1," 趟,假设当前最大值是元素",$i+1,"<hr>";// 用于追踪脚本执行过程
// 第二层,依次两两比较,找出最大值
for ($j=$i+1; $j < count($arr); $j++) {
echo "与第 ",$j+1," 个元素进行比较<br>";// 用于追踪脚本执行过程
// 假设$arr[$i]就是最大值,如果不是最大值,
if ($arr[$i] < $arr[$j]) {
// 则采用临时变量 index 进行交换值,
$index = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $index;
}
// 然后再以当前最大值继续比较剩下的值
}
// 当前趟数比较结束,也确定了一个最大值,$i++进行下一趟的比较
}
// 所有趟数比较完毕!此时数组内所有的元素已经按照降序排列!
return $arr;
}
// 临时数组
$arr1 = array(6,5,8,4,2,1,7,3);
// 调用冒泡排序方法
echo "冒泡排序的过程和效果<pre>";
print_r(maopao($arr1));
echo "冒泡排序小总结:冒泡排序是一种较简单的排序算法,通过循环控制,重复比较数组元素,并纠正排序错误的元素。用冒泡排序,每一趟都能找出当前最大值,如果有8个数组元素,只需要7趟,也就是数组总元素-1,因为第八趟是没有必要的,已经没有数组元素与它比较了!具体的排序过程详见代码注释";