Advertisement
J00ker

QS

Feb 18th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. void quickSort(int arr[], int left, int right) {
  2.  
  3.       int i = left, j = right;
  4.  
  5.       int tmp;
  6.  
  7.       int pivot = arr[(left + right) / 2];
  8.  
  9.  
  10.  
  11.       /* partition */
  12.  
  13.       while (i <= j) {
  14.  
  15.             while (arr[i] < pivot)
  16.  
  17.                   i++;
  18.  
  19.             while (arr[j] > pivot)
  20.  
  21.                   j--;
  22.  
  23.             if (i <= j) {
  24.  
  25.                   tmp = arr[i];
  26.  
  27.                   arr[i] = arr[j];
  28.  
  29.                   arr[j] = tmp;
  30.  
  31.                   i++;
  32.  
  33.                   j--;
  34.  
  35.             }
  36.  
  37.       };
  38.  
  39.  
  40.  
  41.       /* recursion */
  42.  
  43.       if (left < j)
  44.  
  45.             quickSort(arr, left, j);
  46.  
  47.       if (i < right)
  48.  
  49.             quickSort(arr, i, right);
  50.  
  51. }
  52.  
  53. //---------------------------------------------------------------------
  54.  
  55. inline void Sch(int &x, int &y)
  56. {
  57.     Interval aux;
  58.     aux = in[x];
  59.     in[x] = in[y];
  60.     in[y] = aux;
  61. }
  62.  
  63. int Pivot(int st, int dr)
  64. {
  65.     int i, j, piv;
  66.     piv = v[st].b;
  67.     i = st+1;
  68.     j = dr;
  69.     while(i <= j)
  70.     {
  71.         if(v[i].b <= piv) i++;
  72.         if(v[j].b >= piv) j--;
  73.         if(i < j && v[i].b > piv && v[j].b < piv)
  74.         {
  75.             Sch(v[i], v[j]);
  76.             i++; j--;
  77.         }
  78.     }
  79.     Sch(v[st], v[i-1]);
  80.     return i-1;
  81. }
  82.  
  83. void QuickSort(int st, int dr)
  84. {
  85.     int m;
  86.     m = Pivot(st, dr);
  87.     if(st < m-1) QuickSort(st, m-1);
  88.     if(m+1 < dr) QuickSort(m+1, dr);
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement