#include <stdio.h>
int find_min(int ary[], int start, int end)
{
int x = start;
for(int i = start + 1; i < end; i++) {
if (ary[i] < ary[x])
x = i;
}
return x;
}
void swap(int ary[], int x, int y) {
int tmp;
tmp = ary[x];
ary[x] = ary[y];
ary[y] = tmp;
}
void insertion_sort(int ary[], int nelem)
{
for (int i = 0; i < nelem; i++) {
int n = find_min(ary,i,nelem);
swap(ary,ary[i],ary[n]);
}
}
int main () {
int x[] = {5, 4, 2, 8, 6, 1};
insertion_sort(x, 6);
for(int i = 0; i < 6; i++) {
printf("x[%d] = %d\n", i
, x
[i
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZmluZF9taW4oaW50IGFyeVtdLCBpbnQgc3RhcnQsIGludCBlbmQpCnsKICAgIGludCB4ID0gc3RhcnQ7CiAgICBmb3IoaW50IGkgPSBzdGFydCArIDE7IGkgPCBlbmQ7IGkrKykgewogICAgICAgIGlmIChhcnlbaV0gPCBhcnlbeF0pCiAgICAgICAgICAgIHggPSBpOwogICAgfQogICAgcmV0dXJuIHg7Cn0KCnZvaWQgc3dhcChpbnQgYXJ5W10sIGludCB4LCBpbnQgeSkgewogICAgaW50IHRtcDsKICAgIHRtcCA9IGFyeVt4XTsKICAgIGFyeVt4XSA9IGFyeVt5XTsKICAgIGFyeVt5XSA9IHRtcDsKfQoKdm9pZCBpbnNlcnRpb25fc29ydChpbnQgYXJ5W10sIGludCBuZWxlbSkKewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZWxlbTsgaSsrKSB7CiAgICAgICAgaW50IG4gPSBmaW5kX21pbihhcnksaSxuZWxlbSk7CiAgICAgICAgc3dhcChhcnksYXJ5W2ldLGFyeVtuXSk7CiAgICB9Cn0KaW50IG1haW4gKCkgewogICAgaW50IHhbXSA9IHs1LCA0LCAyLCA4LCA2LCAxfTsKICAgIGluc2VydGlvbl9zb3J0KHgsIDYpOwogICAgZm9yKGludCBpID0gMDsgaSA8IDY7IGkrKykgewogICAgICAgIHByaW50ZigieFslZF0gPSAlZFxuIiwgaSwgeFtpXSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==