Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. int vetor_ordena_qsort(vetor* vec)
  2. {
  3.     if(vec == NULL) return -1;
  4.     if(vetor_tamanho(vec) < 2) return 0;
  5.     int esquerda=0, direita=vetor_tamanho(vec)-1;
  6.     //return aux_qsort(vec,esquerda,direita);
  7.     return quick_aux(vec, esquerda, direita);
  8. }
  9. int quick_aux(vetor* vec, int esquerda, int direita){
  10.     if(direita-esquerda<2) return 0;
  11.     int e=esquerda, d=direita, p=rand()%(vetor_tamanho(vec)-1);
  12.     char *aux;
  13.     while(e<=d){
  14.         while(strcmp(vec->elementos[e].str,vec->elementos[p].str)<0 && e<direita){
  15.             e++;
  16.         }
  17.         if(e!=p){
  18.             aux=vec->elementos[e].str;
  19.             vec->elementos[e].str=vec->elementos[p].str;
  20.             vec->elementos[p].str=aux;
  21.             p=e;
  22.         }
  23.         while(strcmp(vec->elementos[d].str,vec->elementos[p].str)>0 && d>esquerda){
  24.             d--;
  25.         }
  26.         if(d!=p){
  27.             aux=vec->elementos[d].str;
  28.             vec->elementos[d].str=vec->elementos[p].str;
  29.             vec->elementos[p].str=aux;
  30.             p=d;
  31.     }
  32. }
  33.     if(d>esquerda)quick_aux(vec,esquerda,p);
  34.     if(e<esquerda)quick_aux(vec,p,direita);
  35.     return 0;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement