Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void myqsort( int begin, int end ) {
- int aux, b = begin, e = end,
- pivot = v[(begin + end) / 2]; // poate fi orice pozitie intre begin si end - 1
- while (v[b] < pivot) // cauta primul element mai mare sau egal cu pivotul
- b++;
- while (v[e] > pivot) // cauta primul element mai mic sau egal cu pivotul
- e--;
- while( b < e ) { // daca indicii nu s-au atins
- aux = v[b]; // interschimba elementele la pozitiile b si e
- v[b] = v[e];
- v[e] = aux;
- do // cauta primul element mai mare sau egal cu pivotul
- b++;
- while (v[b] < pivot);
- do // cauta primul element mai mic sau egal cu pivotul
- e--;
- while (v[e] > pivot);
- }
- // acum [begin..e] sint mai mici sau egale cu pivotul
- if ( begin < e )
- myqsort(begin, e);
- // si [e+1..end] sint mai mari sau egale cu pivotul
- if ( e + 1 < end )
- myqsort(e + 1, end);
- }
Advertisement
Add Comment
Please, Sign In to add comment