#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#define SWAP(a, b) { a ^= b; b ^= a; a ^= b; } while ( 0 )
int main(void)
{
int16_t *array_ptr;
char n; // true-false
int16_t array[] = { 50, -62, 10, 617, -174, 22, 274, 22, 7, 28, -2888, 16, 6};
int16_t *array_end = &array[sizeof(array)/sizeof(array[0])];
do
{
n=0; // FALSE
array_ptr = array; // SET PTR TO THE BEGIN
while (array_ptr != (array_end-1) ) // COMPARE POINTERS
{
if (*array_ptr > *(array_ptr+1)) // COMPARE VALUES
{
SWAP(*array_ptr, *(array_ptr+1)); // SWAP VALUES
n=1; // TRUE
}
array_ptr++;
}
}
while (n);
array_ptr=array;
while (array_ptr != array_end)
{
printf( "%" PRId16
", ", *array_ptr
++); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGludHR5cGVzLmg+IAoKI2RlZmluZSBTV0FQKGEsIGIpICB7IGEgXj0gYjsgYiBePSBhOyBhIF49IGI7IH0gd2hpbGUgKCAwICkKCmludCBtYWluKHZvaWQpCnsKICAgIGludDE2X3QgKmFycmF5X3B0cjsKICAgIAogICAgY2hhciBuOyAgICAgICAgICAgICAgICAgICAvLyB0cnVlLWZhbHNlCiAgICBpbnQxNl90IGFycmF5W10gPSB7IDUwLCAtNjIsIDEwLCA2MTcsIC0xNzQsIDIyLCAyNzQsIDIyLCA3LCAyOCwgLTI4ODgsIDE2LCA2fTsKICAgIGludDE2X3QgKmFycmF5X2VuZCA9ICZhcnJheVtzaXplb2YoYXJyYXkpL3NpemVvZihhcnJheVswXSldOwogICAgZG8KICAgIHsKICAgICAgICBuPTA7ICAgICAgICAgICAgICAgICAgLy8gRkFMU0UKICAgICAgICBhcnJheV9wdHIgPSBhcnJheTsgICAgLy8gU0VUIFBUUiBUTyBUSEUgQkVHSU4KCiAgICAgICAgd2hpbGUgKGFycmF5X3B0ciAhPSAoYXJyYXlfZW5kLTEpICkgICAgICAgICAgLy8gQ09NUEFSRSBQT0lOVEVSUwogICAgICAgIHsKICAgICAgICAgICAgaWYgKCphcnJheV9wdHIgPiAqKGFycmF5X3B0cisxKSkgICAgICAvLyBDT01QQVJFIFZBTFVFUwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTV0FQKCphcnJheV9wdHIsICooYXJyYXlfcHRyKzEpKTsgLy8gU1dBUCBWQUxVRVMKICAgICAgICAgICAgICAgIG49MTsgICAgICAgICAgLy8gVFJVRQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFycmF5X3B0cisrOwogICAgICAgIH0KCiAgICB9CiAgICB3aGlsZSAobik7CiAgICAKICAgIGFycmF5X3B0cj1hcnJheTsKICAgIHdoaWxlIChhcnJheV9wdHIgIT0gYXJyYXlfZW5kKQogICAgewogICAgICAgIHByaW50ZiggIiUiIFBSSWQxNiAiLCAiLCAqYXJyYXlfcHRyKyspOwogICAgfQoKICAgIHByaW50ZigiXG4iKTsKICAgIHJldHVybiAwOwp9
-2888, -174, -62, 6, 7, 10, 16, 22, 22, 28, 50, 274, 617,