<?php //方法一 function getSortArr($array){ $count = count($array); for($i=0;$i<$count-1;$i++){ //从前向后 for($j=0;$j<$count-1-$i;$j++){ $temp = ''; if($array[$j]>$array[$j+1]){ //如果是从大到小的话,只要在这里的判断改成if($array[$j]<$array[$j+1])就可以了 $temp = $array[$j]; $array[$j] = $array[$j+1]; $array[$j+1] = $temp; } } } return $array; } //方法二 function getSortArr2($array){ $count = count($array); for ($i=0; $i < $count-1; $i++) { //从后向前 for($j=$count-1; $j>$i; $j--){ $temp = ''; if($array[$j]<$array[$j-1]){ $temp = $array[$j]; $array[$j] = $array[$j-1]; $array[$j-1] = $temp; } } } return $array; } //优化后 function getSortArr3($array){ $count = count($array); if($count <= 1){ return $array; } $flag = false; for($i=0;$i<$count-1;$i++){ for($j=0;$j<$count-1-$i;$j++){ $temp = ''; if($array[$j]>$array[$j+1]){ $temp = $array[$j]; $array[$j] = $array[$j+1]; $array[$j+1] = $temp; $flag = true; } } if(!$flag){ //如果if($array[$j]>$array[$j+1])没有执行,则$flag为false $flag = false; break; //直接跳出本次循环 } } return $array; } $arr = [3,24,55,223,76,22,11,89,2,4,5,28,11]; $sortArr = getSortArr3($arr); print_r($sortArr); ?>