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. if (a[1] > a[2])
  17. {
  18. REORDER3 (
  19. a[0], a[1], a[2],
  20. a[2], a[1], a[0]);
  21. return;
  22. }
  23. else
  24. if (a[0] > a[2])
  25. {
  26. REORDER3 (
  27. a[0], a[1], a[2],
  28. a[1], a[2], a[0]);
  29. return;
  30. }
  31. else
  32. {
  33. REORDER3 (
  34. a[0], a[1], a[2],
  35. a[1], a[0], a[2]);
  36. return;
  37. }
  38. else
  39. if (a[1] <= a[2])
  40. return; //NO REORDER
  41. else
  42. if (a[0] <= a[2])
  43. {
  44. REORDER3 (
  45. a[0], a[1], a[2],
  46. a[0], a[2], a[1] );
  47. return;
  48. }
  49. else
  50. {
  51. REORDER3 (
  52. a[0], a[1], a[2],
  53. a[2], a[0], a[1] );
  54. return;
  55. }
  56. }
  57.  
  58. int main(void)
  59. {
  60. unsigned int a[] = {0, 1, 2};
  61. unsigned int b[] = {0, 2, 1};
  62. unsigned int c[] = {1, 2, 0};
  63. unsigned int d[] = {1, 0, 2};
  64. unsigned int e[] = {2, 0, 1};
  65. unsigned int f[] = {2, 1, 0};
  66. sort3(a); sort3(b); sort3(c); sort3(d); sort3(e); sort3(f);
  67.  
  68. uintprint3(a);
  69. uintprint3(b);
  70. uintprint3(c);
  71. uintprint3(d);
  72. uintprint3(e);
  73. uintprint3(f);
  74. return 0;
  75. }
Success #stdin #stdout 0s 1832KB
stdin
Standard input is empty
stdout
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2