fork download
  1.  
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. static int dbgdepth = 0;
  8.  
  9. void quicksort(int *tablica, int lewy, int prawy) {
  10. int v = tablica[(lewy + prawy) / 2];
  11. int i, j, x;
  12. i = lewy;
  13. j = prawy;
  14.  
  15. cerr << string(dbgdepth, ' ') << "++ quicksort(" << tablica << ", " << lewy << ", " << prawy << ")\n"; dbgdepth += 2;
  16.  
  17. cerr << string(dbgdepth, ' ') << "v = " << v << '\n';
  18.  
  19. do {
  20. while (tablica[i] < v)
  21. i++;
  22. while (tablica[j] > v)
  23. j--;
  24.  
  25. cerr << string(dbgdepth, ' ') << "tablica[i=" << i << "] = " << tablica[i] << '\n';
  26. cerr << string(dbgdepth, ' ') << "tablica[j=" << j << "] = " << tablica[j] << '\n';
  27.  
  28. if (i <= j) {
  29.  
  30. cerr << string(dbgdepth, ' ') << "swap ...\n";
  31.  
  32. x = tablica[i];
  33. tablica[i] = tablica[j];
  34. tablica[j] = x;
  35. i++;
  36. j--;
  37. }
  38. } while (i <= j);
  39. if (j > lewy)
  40. quicksort(tablica, lewy, j);
  41. if (i < prawy)
  42. quicksort(tablica, i, prawy);
  43.  
  44. dbgdepth -= 2; cerr << string(dbgdepth, ' ') << "-- quicksort()\n";
  45. }
  46.  
  47. void display(int const * tablica, int count) {
  48. cout << "tablica: ";
  49. while (count--) cout << ' ' << *tablica++;
  50. cout << '\n';
  51. }
  52.  
  53. int main()
  54. {
  55. int array [] = {12, 81, 49, 17, 29, 42};
  56. display(array, sizeof(array) / sizeof(array[0]));
  57. quicksort(array, 0, sizeof(array) / sizeof(array[0]) - 1);
  58. display(array, sizeof(array) / sizeof(array[0]));
  59. return 0;
  60. }
  61.  
Success #stdin #stdout #stderr 0.01s 5408KB
stdin
Standard input is empty
stdout
tablica:  12 81 49 17 29 42
tablica:  12 17 29 42 49 81
stderr
++ quicksort(0x7fff7ede7240, 0, 5)
  v = 49
  tablica[i=1] = 81
  tablica[j=5] = 42
  swap ...
  tablica[i=2] = 49
  tablica[j=4] = 29
  swap ...
  tablica[i=4] = 49
  tablica[j=3] = 17
  ++ quicksort(0x7fff7ede7240, 0, 3)
    v = 42
    tablica[i=1] = 42
    tablica[j=3] = 17
    swap ...
    tablica[i=3] = 42
    tablica[j=2] = 29
    ++ quicksort(0x7fff7ede7240, 0, 2)
      v = 17
      tablica[i=1] = 17
      tablica[j=1] = 17
      swap ...
    -- quicksort()
  -- quicksort()
  ++ quicksort(0x7fff7ede7240, 4, 5)
    v = 49
    tablica[i=4] = 49
    tablica[j=4] = 49
    swap ...
  -- quicksort()
-- quicksort()