算法说明
- 选择一位数,一般是下标为0的数
- 遍历整个数组,记录下最大或者最小值在数组中的位置
- 替换最小值或者最大值和选择的数的位置
- 循环
n
*n-1
*n-2
*…
*1
次
实现
PHP版本
function selectSort($arr)
{
if (!isset($arr[1])) {
return $arr;
}
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
$key = $i;
for ($j = $i + 1; $j < $length; $j++) {
if ($arr[$key] > $arr[$j]) {
$key = $j;
}
}
if ($key != $i) {
$row = $arr[$i];
$arr[$i] = $arr[$key];
$arr[$key] = $row;
}
}
return $arr;
}
selectSort([2,5,1,6,2,7,33];
// [1,2,2,5,6,7,33]
JS版本
function selectSort(arr) {
let length = arr.length
if (length < 2) {
return arr
}
for (let i = 0; i < length; i++) {
let key = i
for (let j = i + 1; j < length; j++) {
if (arr[key] > arr[j]) {
key = j
}
}
if (key != i) {
let row = arr[i]
arr[i] = arr[key]
arr[key] = row
}
}
return arr
}
selectSort([2,5,1,6,2,7,33];
// [1,2,2,5,6,7,33]
网友评论