扫码关注官方订阅号
怎么最后一个就是排不上
学习是最好的投资!
应该让第一个for中的 $i=0
================================估计你抄错了,把 $i 抄 成 $j 了。
看到评论有点反应过激了,好人做到底吧没有分析题主的思路,想当然的回答被骂做 背代码,纯属活该
================================
循环的次数不对,$j第二层循环应该是 -$i,而不是减去$j
$arr = array(21,7,5,23,2); var_dump($arr); $long = count($arr); for($i=0;$i<$long;$i++){ for($j=0;$j<$long-$i-1;$j++){ if($arr[$j]>$arr[$j+1]){ $x = $arr[$j+1]; $arr[$j+1]=$arr[$j]; $arr[$j]=$x; } } } var_dump($arr);
每次循环把最大的往下沉i是循环整个数组那么j的时候,第一次肯定要都比较第二次开始,由于每次都下沉一个最大的数,也就是多每次可以比之前少比较一次
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
应该让第一个for中的 $i=0
================================
估计你抄错了,把 $i 抄 成 $j 了。
看到评论有点反应过激了,好人做到底吧
没有分析题主的思路,想当然的回答
被骂做 背代码,纯属活该
================================

循环的次数不对,$j
第二层循环应该是 -$i,而不是减去$j
每次循环把最大的往下沉
i是循环整个数组
那么j的时候,第一次肯定要都比较
第二次开始,由于每次都下沉一个最大的数,也就是多每次可以比之前少比较一次