前言
選擇排序是一種簡單直觀的排序算法,無論什麼數據進去都是 O(n²) 的時間複雜度。所以用到它的時候,數據規模越小越好。唯一的好處可能就是不佔用額外的內存空間了吧。
算法步驟
1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
2、再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
3、重複第二步,直到所有元素均排序完畢。
動圖演示
PHP代碼實現
function SelectSort($arr) {
// 獲得數組總長度
$num = count($arr);
// 遍歷數組
for ($i = 0;$i < $num-1; $i++) {
// 暫存當前值
$iTemp = $arr[$i];
// 暫存當前位置
$iPos = $i;
// 遍歷當前位置以後的數據
for ($j = $i + 1;$j < $num; $j++){
// 如果有小於當前值的
if ($arr[$j] < $iTemp) {
// 暫存最小值
$iTemp = $arr[$j];
// 暫存位置
$iPos = $j;
}
}
// 把當前值放到算好的位置
$arr[$iPos] = $arr[$i];
// 把當前值換成算好的值
$arr[$i] = $iTemp;
}
return $arr;
}