#include <cstdio>
#include <iostream>
template<typename T, bool low_to_high>
void bubblesort(T* x, unsigned size)
{
for (unsigned i = 0; i < size - 1; ++i)
{
for (unsigned j = 0; j < size - i - 1; ++j)
{
if (low_to_high ? x[j] > x[j + 1] : x[j] < x[j + 1])
{
T temp = x[j];
x[j] = x[j + 1];
x[j + 1] = temp;
}
}
}
}
void print(int* a, unsigned size)
{
for (unsigned i = 0; i < size - 1; ++i)
{
std::cout<<a[i]<<" ";
}
std::cout<<a[size - 1]<<"\n\n";
}
int main()
{
int a[12] = {0};
unsigned len = sizeof(a)/sizeof(a[0]);
std::cout<<"Enter "<<len<<" numbers: ";
for (unsigned i = 0; i < len; ++i)
{
std::cin>>a[i];
std::cin.ignore();
}
std::cout<<"\n\n";
bubblesort<int, true>(a, len);
print(a, len);
bubblesort<int, false>(a, len);
print(a, len);
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9vbCBsb3dfdG9faGlnaD4Kdm9pZCBidWJibGVzb3J0KFQqIHgsIHVuc2lnbmVkIHNpemUpCnsKCWZvciAodW5zaWduZWQgaSA9IDA7ICBpIDwgc2l6ZSAtIDE7ICArK2kpCiAgICB7CiAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgIGogPCBzaXplIC0gaSAtIDE7ICArK2opCiAgICAgICAgewogICAgICAgICAgICBpZiAobG93X3RvX2hpZ2ggPyB4W2pdID4geFtqICsgMV0gOiB4W2pdIDwgeFtqICsgMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgCVQgdGVtcCA9IHhbal07CiAgICAgICAgICAgICAgICB4W2pdID0geFtqICsgMV07CiAgICAgICAgICAgICAgICB4W2ogKyAxXSA9IHRlbXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnZvaWQgcHJpbnQoaW50KiBhLCB1bnNpZ25lZCBzaXplKQp7Cglmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZSAtIDE7ICsraSkKCXsKCQlzdGQ6OmNvdXQ8PGFbaV08PCIgIjsKCX0KCQoJc3RkOjpjb3V0PDxhW3NpemUgLSAxXTw8IlxuXG4iOwp9CgppbnQgbWFpbigpCnsKCWludCBhWzEyXSA9IHswfTsKCXVuc2lnbmVkIGxlbiA9IHNpemVvZihhKS9zaXplb2YoYVswXSk7CgkKCXN0ZDo6Y291dDw8IkVudGVyICI8PGxlbjw8IiBudW1iZXJzOiAiOwoJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKQoJewoJCXN0ZDo6Y2luPj5hW2ldOwoJCXN0ZDo6Y2luLmlnbm9yZSgpOwoJfQoKCXN0ZDo6Y291dDw8IlxuXG4iOwoJCglidWJibGVzb3J0PGludCwgdHJ1ZT4oYSwgbGVuKTsKCXByaW50KGEsIGxlbik7CgkKCWJ1YmJsZXNvcnQ8aW50LCBmYWxzZT4oYSwgbGVuKTsKCXByaW50KGEsIGxlbik7Cn0=
MSwgNCwgMywgNywgMiwgMTAsIDUsIDgsIDExLCA2LCAxMiwgOQ==
1, 4, 3, 7, 2, 10, 5, 8, 11, 6, 12, 9