#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++);
    }

    printf("\n");
    return 0;
}