失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP算法题:如何实现冒泡排序

PHP算法题:如何实现冒泡排序

时间:2020-08-03 21:51:06

相关推荐

PHP算法题:如何实现冒泡排序

算法原理:

1.比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素。

2.对每一对相邻元素做同样的工作,从第一对开始到最后一对结束,最后的元素应该会是最大的数。

3.除了最后一个元素外,针对其他的元素重复以上步骤。

4.对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。

实现代码:

<?phpheader("Content-type:text/html;charset=utf-8");// 性能最差的冒泡排序方法function maopao1($arr) {$len = count($arr); //计算数字长度for ($i = 1; $i < $len; $i++) {// 该层循环控制需要冒泡的轮数for ($k = 0; $k < $len -$i; $k++) {if ($arr[$k] > $arr[$k+1]) {$tmp = $arr[$k];$arr[$k] = $arr[$k+1];$arr[$k+1] = $tmp;}}}return $arr;}// 性能最好的冒泡排序方法function maopao2($arr) {// 设置变量的初始值$low = 0;$high = count($arr) -1;while ($low < $high) {// 正向冒泡,找到最大值for ($j = $low; $j < $high; ++$j) {if ($arr[$j] > $arr[$j+1]) {$tmp = $arr[$j];$arr[$j] = $arr[$j+1];$arr[$j+1] = $tmp;}}--$high;// 放向冒泡,找到最小值for ($j = $high; $j > $low; --$j) {if ($arr[$j] < $arr[$j-1]) {$tmp = $arr[$j];$arr[$j] = $arr[$j-1];$arr[$j-1] = $tmp;}}++$low;}return $arr;}$arr = array(121,656,8997,11,56456,778,65454,314354,1121);echo "排序前:";foreach ($arr as $k => $val) {echo $val.' ';}echo "<br>方法一排序后:";$arr = maopao1($arr);foreach ($arr as $k => $val) {echo $val.' ';}echo "<br>方法二排序后:";$arr = maopao2($arr);foreach ($arr as $k => $val) {echo $val.' ';}?>

如果觉得《PHP算法题:如何实现冒泡排序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。