sub selectionSort { my @arr = @_;
my $n = scalar @arr;
for (my $i = 0; $i < $n-1; $i++) { my $minIdx = $i;
for (my $j = $i+1; $j < $n; $j++) { if ($arr[$j] < $arr[$minIdx]) { $minIdx = $j;
} } (my $arr[$i], $arr[$minIdx]) = ($arr[$minIdx], $arr[$i]);
} return @arr;
}
Python
def selectionSort(arr):
n = len(arr)
for i in range(n-1):
minIdx = i
for j in range(i+1, n):
if arr[j] < arr[minIdx]:
minIdx = j
arr[i], arr[minIdx] = arr[minIdx], arr[i]
Ruby
def selectionSort(arr)
n = arr.length
(0...n-1).each do |i|
minIdx = i
((i+1)...n).each do |j|
if arr[j] < arr[minIdx]
minIdx = j
end end arr[i], arr[minIdx] = arr[minIdx], arr[i]
end arr
end
Delphi
procedure SelectionSort(var Arr: arrayof Integer);
var i, j, minIdx, Temp: Integer;
begin for i := 0to High(Arr) -1do begin minIdx := i;
for j := i +1to High(Arr) do if Arr[j] < Arr[minIdx] then minIdx := j;
Temp := Arr[minIdx];
Arr[minIdx] := Arr[i];
Arr[i] := Temp;
end;
end;
Rust
fn selectionSort(arr: &mut[i32]) {
let n = arr.len();
for i in0..n-1 {
letmut minIdx = i;
for j in (i+1)..n {
if arr[j] < arr[minIdx] {
minIdx = j;
}
}
arr.swap(i, minIdx);
}
}
function selectionSort(arr)
{ var n = arr.length;
for (var i = 0; i < n-1; i++) { var minIdx = i;
for (var j = i+1; j < n; j++) { if (arr[j] < arr[minIdx]) { minIdx = j;
} } var temp = arr[minIdx];
arr[minIdx] = arr[i];
arr[i] = temp;
} }
Lua
function selectionSort(arr)
local n = #arr
for i = 1, n-1do local minIdx = i
for j = i+1, n do if arr[j] < arr[minIdx] then minIdx = j
end end arr[i], arr[minIdx] = arr[minIdx], arr[i]
end end