版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/phpbook/article/details/53140690
思路分析:每次從待排序列中選出最大、次大的元素,與冒泡排序相比,每次循環只交換一次位置,節省資源。
function select_sort($array){
$len=count($array);
if($len<=0){
echo '數組不能爲空';
return;
}
//兩層循環完成排序,外層控制輪數,內層進行便利比較,
for($i=$len-1;$i>0;$i--){
$tmp = 0;
//內層循環從第一個開始,經過循環比對,獲取最大值的key,將當前最大值與末尾元素進行對換
for($j= 0;$j <= $i;$j++){
if($array[$tmp] < $array[$j]){
$tmp = $j;
}
}
//如果最大值就是末尾元素,不進行替換
if($i!=$tmp){
$tmpval = $array[$tmp];
$array[$tmp] = $array[$i];
$array[$i] = $tmpval;
}
}
return $array;
}
echo "<pre>";
print_r(select_sort($arr));
echo "</pre>";