//insertion sort
#include<iostream>
#include <ctime>
using namespace std;
class insertion{
public:
insertion(){} //constructor
void sort(int a[], int n) { //insertion sort function
for (int i = 1; i < n; i++) {
int value = a[i];
int index = i;
while (index > 0 && a[index - 1] > value) {
a[index] = a[index - 1];
index=index-1;
}
a[index] = value;
}
}
//display function
void display(int a[], int n) {
for (int i = 0; i < n; i++) {
cout << a[i] << endl;
}
}
};
int main(){
insertion ins;
int a[10];
int n = 10;
for (int i = 0; i < n; i++) {
a[i] = 10 - i;
}
ins.sort(a, n);
ins.display(a, n);
}
IC8vaW5zZXJ0aW9uIHNvcnQKICAgICNpbmNsdWRlPGlvc3RyZWFtPgogICAgI2luY2x1ZGUgPGN0aW1lPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgIGNsYXNzIGluc2VydGlvbnsKICAgIHB1YmxpYzoKICAgICAgICBpbnNlcnRpb24oKXt9IC8vY29uc3RydWN0b3IKICAgICAgICB2b2lkIHNvcnQoaW50IGFbXSwgaW50IG4pIHsgLy9pbnNlcnRpb24gc29ydCBmdW5jdGlvbgogICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgaW50IHZhbHVlID0gYVtpXTsKICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGk7CiAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPiAwICYmIGFbaW5kZXggLSAxXSA+IHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgYVtpbmRleF0gPSBhW2luZGV4IC0gMV07CiAgICAgICAgICAgICAgICAgICAgaW5kZXg9aW5kZXgtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFbaW5kZXhdID0gdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vZGlzcGxheSBmdW5jdGlvbgogICAgICAgIHZvaWQgZGlzcGxheShpbnQgYVtdLCBpbnQgbikgewogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgY291dCA8PCBhW2ldIDw8IGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgaW50IG1haW4oKXsKICAgICAgICBpbnNlcnRpb24gaW5zOwogICAgICAgIGludCBhWzEwXTsKICAgICAgICBpbnQgbiA9IDEwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGFbaV0gPSAxMCAtIGk7CiAgICAgICAgfQoKICAgICAgICBpbnMuc29ydChhLCBuKTsKICAgICAgICBpbnMuZGlzcGxheShhLCBuKTsKCiAgICB9