发文时间:2020年06月14日 18:11:02 编辑:Aaron 标签:冒泡算法 705
冒泡排序属于一种典型的交换排序
<?php /* * 思路:N个数组来从小到大排队,两两相比,小靠前大靠后,外层循环N,内层循环 N-i * 内层循环时,for的条件长度可减去外层循环的次数(i),因每次循环都会把最大的值排 * 到最后 依次递增 */ $arr=[2,9,8,4,3,0,2,5,7,6,24,11,4,1]; $length=count($arr)-1; for($i=0;$i<$length;$i++){ for($j=0;$j<$length-$i;$j++){ //比较j和j+1的值 若前大后小就进行位置互换 if($arr[$j]>$arr[$j+1]){ $value=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$value; } } } var_dump($arr); /* 输出 array (size=14) 0 => int 0 1 => int 1 2 => int 2 3 => int 2 4 => int 3 5 => int 4 6 => int 4 7 => int 5 8 => int 6 9 => int 7 10 => int 8 11 => int 9 12 => int 11 13 => int 24 */ die;
<?php /* * 思路:通过$i判断当前for是否循环结束,从而继续下一次的循环 */ $arr=[2,9,8,4,3,15,21,5,7,6,24,11,74,1]; $length=count($arr)-1; for ($i = 0; $i < $length; $i++) { //判断是否应该交换位置 if ($arr[$i] > $arr[$i + 1]){ $value= $arr[$i]; $arr[$i] = $arr[$i + 1]; $arr[$i + 1] = $value; } //判断该次for是否循环完 if ($i == $length-1) { //若该次for循环结束将i赋值-1,并且将$length的长度减1,继续下次循环 $i = -1; $length--; } } var_dump($arr); /* 输出 array (size=14) 0 => int 1 1 => int 2 2 => int 3 3 => int 4 4 => int 5 5 => int 6 6 => int 7 7 => int 8 8 => int 9 9 => int 11 10 => int 15 11 => int 21 12 => int 24 13 => int 74 */ die;
若无特殊说明,此文章为博主原创。 写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/66.html
用PHP实现冒泡排序
发文时间:2020年06月14日 18:11:02 编辑:Aaron 标签:冒泡算法 705
冒泡排序属于一种典型的交换排序
一、双层for实现
二、单层for实现
若无特殊说明,此文章为博主原创。
写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/66.html