// Programa C++ para insertion sort
#include<iostream>
using namespace std;
/* Funcion para ordenar un arreglo usando insertion sort*/
// void insertionSort(int arr[], int n)
void insertionSort(int arr[], int n) {
int i, j, temp;
for (i = 1; i < n; i++) {
j = i;
/* Mover los elementos del arreglo desde arr[0] a arr[i-1], que son
mayores que el elemento clave,una posición adelante
de su posición actual */
while (j > 0 && arr[j - 1] > arr[j]) {
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
}
}
// Funcion para imprimir un arreglo de tamaño n
void printArray(int arr[], int n)
{
int i;
for (i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}
/* Probando las funciones*/
int main()
{
int arr[] = { 12, 11, 13, 5, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Arreglo a ordenar " << endl;
printArray(arr, n);
insertionSort(arr, n);
cout << "Arreglo ordenado" << endl;
printArray(arr, n);
return 0;
}
// Basado en codigo de Rathbhupendra