fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int trick_comp(const void* a_, const void* b_)
  6. {
  7. int a = *(int*)a_, b = *(int*)b_;
  8. if (a && b == 0) return -1;
  9. if (b && a == 0) return 1;
  10. return (a < b) ? -1 : (a > b) ? 1 : 0;
  11. }
  12.  
  13. void trick_sort(int * a, int N)
  14. {
  15. qsort(a,N,sizeof(int),trick_comp);
  16. }
  17.  
  18. int main(int argc, const char * argv[])
  19. {
  20. int a[20] = { 1,5,0,7,2,0,3,12,0,4,0,6,9 };
  21.  
  22. trick_sort(a, sizeof(a)/sizeof(a[0]));
  23.  
  24. for(int i = 0; i < sizeof(a)/sizeof(a[0]); ++i)
  25. printf("%d ",a[i]);
  26. }
  27.  
  28.  
Success #stdin #stdout 0s 4212KB
stdin
Standard input is empty
stdout
1 2 3 4 5 6 7 9 12 0 0 0 0 0 0 0 0 0 0 0