// C program for insertion sort
#include <math.h>
#include <stdio.h>
/* Function to sort an array
using insertion sort*/
void insertionSort(int arr[], int n)
{
int i, key, j;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i - 1;
/* Move elements of arr[0..i-1],
that are greater than key,
to one position ahead of
their current position */
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
// A utility function to print
// an array of size n
void printArray(int arr[], int n)
{
int i;
for (i = 0; i < n; i++)
}
// Driver code
int main()
{
int arr[] = {12, 11, 13, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
insertionSort(arr, n);
printArray(arr, n);
return 0;
}
Ly8gQyBwcm9ncmFtIGZvciBpbnNlcnRpb24gc29ydAojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCi8qIEZ1bmN0aW9uIHRvIHNvcnQgYW4gYXJyYXkgCnVzaW5nIGluc2VydGlvbiBzb3J0Ki8Kdm9pZCBpbnNlcnRpb25Tb3J0KGludCBhcnJbXSwgaW50IG4pCnsKCWludCBpLCBrZXksIGo7Cglmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSAKCXsKCQlrZXkgPSBhcnJbaV07CgkJaiA9IGkgLSAxOwoKCQkvKiBNb3ZlIGVsZW1lbnRzIG9mIGFyclswLi5pLTFdLCAKCQl0aGF0IGFyZSBncmVhdGVyIHRoYW4ga2V5LCAKCQl0byBvbmUgcG9zaXRpb24gYWhlYWQgb2YgCgkJdGhlaXIgY3VycmVudCBwb3NpdGlvbiAqLwoJCXdoaWxlIChqID49IDAgJiYgYXJyW2pdID4ga2V5KSAKCQl7CgkJCWFycltqICsgMV0gPSBhcnJbal07CgkJCWogPSBqIC0gMTsKCQl9CgkJYXJyW2ogKyAxXSA9IGtleTsKCX0KfQoKLy8gQSB1dGlsaXR5IGZ1bmN0aW9uIHRvIHByaW50IAovLyBhbiBhcnJheSBvZiBzaXplIG4Kdm9pZCBwcmludEFycmF5KGludCBhcnJbXSwgaW50IG4pCnsKCWludCBpOwoJZm9yIChpID0gMDsgaSA8IG47IGkrKykKCQlwcmludGYoIiVkICIsIGFycltpXSk7CglwcmludGYoIlxuIik7Cn0KCi8vIERyaXZlciBjb2RlCmludCBtYWluKCkKewoJaW50IGFycltdID0gezEyLCAxMSwgMTMsIDUsIDZ9OwoJaW50IG4gPSBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pOwoKCWluc2VydGlvblNvcnQoYXJyLCBuKTsKCXByaW50QXJyYXkoYXJyLCBuKTsKCglyZXR1cm4gMDsKfQo=