Alex_tz307

Quick Sort

Sep 10th, 2020
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. void myqsort( int begin, int end ) {
  2.   int aux, b = begin, e = end,
  3.     pivot = v[(begin + end) / 2]; // poate fi orice pozitie intre begin si end - 1
  4.  
  5.   while (v[b] < pivot) // cauta primul element mai mare sau egal cu pivotul
  6.     b++;
  7.  
  8.   while (v[e] > pivot) // cauta primul element mai mic sau egal cu pivotul
  9.     e--;
  10.  
  11.   while( b < e ) { // daca indicii nu s-au atins
  12.     aux = v[b];    // interschimba elementele la pozitiile b si e
  13.     v[b] = v[e];
  14.     v[e] = aux;
  15.    
  16.     do // cauta primul element mai mare sau egal cu pivotul
  17.       b++;
  18.     while (v[b] < pivot);
  19.  
  20.     do // cauta primul element mai mic sau egal cu pivotul
  21.       e--;
  22.     while (v[e] > pivot);
  23.   }
  24.  
  25.   // acum [begin..e] sint mai mici sau egale cu pivotul
  26.   if ( begin < e )
  27.     myqsort(begin, e);
  28.   // si [e+1..end] sint mai mari sau egale cu pivotul
  29.   if ( e + 1 < end )
  30.     myqsort(e + 1, end);
  31. }
Advertisement
Add Comment
Please, Sign In to add comment