#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int trick_comp(const void* a_, const void* b_)
{
    int a = *(int*)a_, b = *(int*)b_;
    if (a && b == 0) return -1;
    if (b && a == 0) return  1;
    return (a < b) ? -1 : (a > b) ? 1 : 0;
}

void trick_sort(int * a, int N)
{
    qsort(a,N,sizeof(int),trick_comp);
}

int main(int argc, const char * argv[])
{
    int a[20] = { 1,5,0,7,2,0,3,12,0,4,0,6,9 };

    trick_sort(a, sizeof(a)/sizeof(a[0]));

    for(int i = 0; i < sizeof(a)/sizeof(a[0]); ++i)
        printf("%d ",a[i]);
}

