fork download
  1.  
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int a[] = { 5,10,7,6,3,9,4,8,12 };
  9. int i = 0, j = 8;
  10. int k = (i+j)/2;
  11. int mid = a[k];
  12. bool a1=false,a2=false;
  13. do
  14. {
  15. while (i<k)
  16. {
  17. if (a[i] > mid) { a1 = true; break; }
  18. i++;
  19. }
  20. while (j>k)
  21. {
  22. if (a[j] < mid) { a2 = true; break; }
  23. j--;
  24. }
  25. if (a1 && a2)
  26. {
  27. int temp = a[i];
  28. a[i]=a[j];
  29. a[j] = temp;
  30. a1=false;
  31. a2=false;
  32. i++;
  33. j--;
  34. }
  35. else if (!a1 && a2)
  36. {
  37. a[k] = a[j];
  38. a[j]=mid;
  39. mid = a[k];
  40. a2=false;
  41. i = 0;
  42. j = 8;
  43. }
  44. else if (a1 && !a2)
  45. {
  46. a[k] = a[i];
  47. a[i]=mid;
  48. mid = a[k];
  49. a1=false;
  50. i = 0;
  51. j = 8;
  52. }
  53. else break;
  54. }while (1);
  55.  
  56. for (int i = 0; i<9; i++) cout << a[i] << " "; cout << endl;
  57.  
  58. return 0;
  59. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
3 4 5 6 7 9 10 8 12