fork download
  1. #include <stdio.h>
  2.  
  3. #define REORDER3(b1, b2, b3, a1, a2, a3 ) \
  4. { \
  5.   typeof(a1) _tmp[] = {a1, a2, a3}; \
  6.   b1 = _tmp[0]; b2 = _tmp[1]; b3 = _tmp[2]; \
  7. } while ( 0 )
  8.  
  9. #define uintprint3(a) printf("%u %u %u\n", a[0], a[1], a[2])
  10.  
  11.  
  12. void sort3( unsigned int a[3] )
  13. {
  14.  
  15. if (a[0] > a[1]) //-----------------------------//
  16. //
  17. if (a[1] > a[2]) //-------------// //
  18. {
  19. REORDER3 ( // //
  20. // a[0] > a[1] // a[0] > a[1]
  21. a[0], a[1], a[2], // a[1] > a[2] //
  22. a[2], a[1], a[0] // //
  23. ); return; }// //
  24. //------------------------------// //
  25. //
  26. else if (a[0] > a[2]) //--------// //
  27. { REORDER3 ( // a[0] > a[1] //
  28. // a[1] <= a[2] //
  29. a[0], a[1], a[2], // a[0] > a[2] //
  30. a[1], a[2], a[0] // //
  31. ); return; }// //
  32. //------------------------------// //
  33. //
  34. else //-------------------------// //
  35. { REORDER3 ( // a[0] > a[1] //
  36. // a[1] <= a[2] //
  37. a[0], a[1], a[2], // a[0] <= a[2] //
  38. a[1], a[0], a[2] // //
  39. ); return; }// //
  40. //------------------------------// //
  41. //
  42. //----------------------------------------------//
  43.  
  44. else //-----------------------------------------//
  45. //
  46. if (a[1] <= a[2]) //------------// //
  47. /*REORDER3 ( // //
  48.   // a[0] <= a[1] // a[0] <= a[1]
  49.   a[0], a[1], a[2], // a[1] <= a[2] //
  50.   a[0], a[1], a[2], // //
  51.   );*/ return; // //
  52. //------------------------------// //
  53. //
  54. else if (a[0] <= a[2]) //-------// //
  55. { REORDER3 ( // a[0] <= a[1] //
  56. // a[1] > a[2] //
  57. a[0], a[1], a[2], // a[0] <= a[2] //
  58. a[0], a[2], a[1] // //
  59. ); return; }// //
  60. //------------------------------// //
  61. //
  62. else //-------------------------// //
  63. { REORDER3 ( // a[0] <= a[1] //
  64. // a[1] > a[2] //
  65. a[0], a[1], a[2], // a[0] > a[2] //
  66. a[2], a[0], a[1] // //
  67. ); return; }// //
  68. //------------------------------// //
  69. //
  70. //----------------------------------------------//
  71. }
  72.  
  73. int main(void)
  74. {
  75. unsigned int a[] = {0, 1, 2};
  76. unsigned int b[] = {0, 2, 1};
  77. unsigned int c[] = {1, 2, 0};
  78. unsigned int d[] = {1, 0, 2};
  79. unsigned int e[] = {2, 0, 1};
  80. unsigned int f[] = {2, 1, 0};
  81. sort3(a); sort3(b); sort3(c); sort3(d); sort3(e); sort3(f);
  82.  
  83. uintprint3(a);
  84. uintprint3(b);
  85. uintprint3(c);
  86. uintprint3(d);
  87. uintprint3(e);
  88. uintprint3(f);
  89.  
  90. return 0;
  91. }
  92.  
Success #stdin #stdout 0s 1788KB
stdin
Standard input is empty
stdout
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2