Insertion Sort
Sort an array in ascending order using insertion sort.
Sample input
[12, 11, 13, 5, 6]
Sample output
5 6 11 12 13
Solution
arr = [12, 11, 13, 5, 6]
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
print(*arr)
const arr = [12, 11, 13, 5, 6];
for (let i = 1; i < arr.length; i++) {
const key = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
console.log(arr.join(" "));
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
int[] arr = {12, 11, 13, 5, 6};
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
System.out.println(Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(" ")));
}
}
fun main() {
val arr = intArrayOf(12, 11, 13, 5, 6)
for (i in 1 until arr.size) {
val key = arr[i]
var j = i - 1
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j]
j--
}
arr[j + 1] = key
}
println(arr.joinToString(" "))
}
var arr = [12, 11, 13, 5, 6]
for i in 1..<arr.count {
let key = arr[i]
var j = i - 1
while j >= 0 && arr[j] > key {
arr[j + 1] = arr[j]
j -= 1
}
arr[j + 1] = key
}
print(arr.map(String.init).joined(separator: " "))
void main() {
final arr = [12, 11, 13, 5, 6];
for (var i = 1; i < arr.length; i++) {
final key = arr[i];
var j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
print(arr.join(' '));
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> arr = {12, 11, 13, 5, 6};
for (int i = 1; i < (int) arr.size(); i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
for (int i = 0; i < (int) arr.size(); i++) {
cout << arr[i];
if (i < (int) arr.size() - 1) cout << " ";
}
cout << endl;
return 0;
}
#include <stdio.h>
int main() {
int arr[] = {12, 11, 13, 5, 6};
int n = 5;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if (i < n - 1) printf(" ");
}
printf("\n");
return 0;
}