PHP冒泡法
1:从第一个数开始比对
<?php function sorts($list) { if(!is_array($list)) return false; $count = count($list); if(empty($count)) return false; for($i=0;$i<$count;$i++){ //外层循环数组 //内层循环,相邻的数对比,对比count-1次,循环一次,把最小或者最大的沉入数组最后 //这样每次循环数就减少一次。 for($j=0;$j<$count-1-$i;$j++){ //循环一次得到一个最大数或者最小数,故循环次数减1 if($list[$j]<$list[$j+1]){ //交换位置 $tmp = $list[$j]; $list[$j] = $list[$j+1]; $list[$j+1] = $tmp; } } } print_r($list); } $list = ['10','11','2','5','0','1']; sorts($list);
2:从最后一个数开始比对
<?php function sorts($list) { if(!is_array($list)) return false; $count = count($list); if(empty($count)) return false; for($i=0;$i<$count;$i++) { for($j=$count-1;$j>$i;$j--) //从数组最后一个元素往前面推 { if($list[$j]<$list[$j-1]){ $tmp = $list[$j]; $list[$j] = $list[$j-1]; $list[$j-1] = $tmp; } } } return $list; } $list = ['10','11','2','5','0','1']; sorts($list);