这在算法界应该是最简单最基础的了吧,不BB,直接上代码!
<?php
$arr = array(52,2,63,482,4,1,52,7,96,244,21,1080,-15,66,34.5,0.1,86);
for ($i=0; $i < count($arr)-1 ; $i++) {
for ($j=0; $j <(count($arr)-$i-1); $j++) {
if( $arr[$j] > $arr[$j+1] ){ //比较相邻的两个数大小,如果前者大于后者则交换位置
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
}
var_dump($arr);
输出结果:
基本思想:
最外层for循环只需要循环count($arr)-1次,因为当第二位已经归位的时候,第一位也就归位了,无需再重复比较。
同理内部的for循环,每次循环都会将一个数归位,也就是末位上个那个数,(会将每次比较中最大的那个数放到最后)因此每次循环只需循环比较前面几位就可以了,无需比较已经归位的数