#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,i,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+CmludCBmaW5kX21pbihpbnQgYXJ5W10sIGludCBzdGFydCwgaW50IGVuZCkKewogIGludCB4ID0gc3RhcnQ7CiAgZm9yKGludCBpID0gc3RhcnQgKyAxOyBpIDwgZW5kOyBpKyspIHsKICAgIGlmIChhcnlbaV0gPCBhcnlbeF0pCiAgICB4ID0gaTsKICB9CiAgcmV0dXJuIHg7Cn0Kdm9pZCBzd2FwKGludCBhcnlbXSwgaW50IHgsIGludCB5KSB7CiAgaW50IHRtcDsKICB0bXAgPSBhcnlbeF07CiAgYXJ5W3hdID0gYXJ5W3ldOwogIGFyeVt5XSA9IHRtcDsKfQp2b2lkIGluc2VydGlvbl9zb3J0KGludCBhcnlbXSwgaW50IG5lbGVtKQp7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZWxlbTsgaSsrKSB7CiAgICBpbnQgbiA9IGZpbmRfbWluKGFyeSxpLG5lbGVtKTsKICAgIHN3YXAoYXJ5LGksbik7CiAgfQp9CmludCBtYWluICgpIHsKICBpbnQgeFtdID0gezUsIDQsIDIsIDgsIDYsIDF9OwogIGluc2VydGlvbl9zb3J0KHgsIDYpOwogIGZvcihpbnQgaSA9IDA7IGkgPCA2OyBpKyspIHsKICAgIHByaW50ZigieFslZF0gPSAlZFxuIiwgaSwgeFtpXSk7CiAgfQogIHJldHVybiAwOwp9Cg==