sub insertionSort { my @arr = @_;
my $n = scalar @arr;
for (my $i = 1; $i < $n; $i++) { my $key = $arr[$i];
my $j = $i -1;
while ($j >= 0 && $arr[$j] > $key) { $arr[$j+1] = $arr[$j];
$j--;
} $arr[$j+1] = $key;
} return @arr;
}
Python
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i -1 while j >= 0and arr[j] > key:
arr[j+1] = arr[j]
j -= 1 arr[j+1] = key
Ruby
def insertionSort(arr)
(1...arr.length).each do |i|
key = arr[i]
j = i -1 while j >= 0 && arr[j] > key
arr[j+1] = arr[j]
j -= 1 end arr[j+1] = key
end arr
end
Delphi
procedure InsertionSort(var Arr: arrayof Integer);
var i, j, Key: Integer;
begin for i := 1to High(Arr) do begin Key := Arr[i];
j := i -1;
while (j >= 0) and (Arr[j] > Key) do begin Arr[j + 1] := Arr[j];
Dec(j);
end;
Arr[j + 1] := Key;
end;
end;
Rust
fn insertionSort(arr: &mut[i32]) {
for i in1..arr.len() {
let key = arr[i];
letmut j = i;
while j > 0 && arr[j-1] > key {
arr[j] = arr[j-1];
j -= 1;
}
arr[j] = key;
}
}
function insertionSort(arr)
{ for (var i = 1; i < arr.length; i++) { var key = arr[i];
var j = i -1;
while (j >= 0 && arr[j] > key) { arr[j+1] = arr[j];
j--;
} arr[j+1] = key;
} }
Lua
function insertionSort(arr)
for i = 2, #arr do local key = arr[i]
local j = i -1 while j >= 1and arr[j] > key do arr[j+1] = arr[j]
j = j -1 end arr[j+1] = key
end end