Insertion Sort

Medium Searching & Sorting
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;
}