Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int vetor_ordena_qsort(vetor* vec)
- {
- if(vec == NULL) return -1;
- if(vetor_tamanho(vec) < 2) return 0;
- int esquerda=0, direita=vetor_tamanho(vec)-1;
- //return aux_qsort(vec,esquerda,direita);
- return quick_aux(vec, esquerda, direita);
- }
- int quick_aux(vetor* vec, int esquerda, int direita){
- if(direita-esquerda<2) return 0;
- int e=esquerda, d=direita, p=rand()%(vetor_tamanho(vec)-1);
- char *aux;
- while(e<=d){
- while(strcmp(vec->elementos[e].str,vec->elementos[p].str)<0 && e<direita){
- e++;
- }
- if(e!=p){
- aux=vec->elementos[e].str;
- vec->elementos[e].str=vec->elementos[p].str;
- vec->elementos[p].str=aux;
- p=e;
- }
- while(strcmp(vec->elementos[d].str,vec->elementos[p].str)>0 && d>esquerda){
- d--;
- }
- if(d!=p){
- aux=vec->elementos[d].str;
- vec->elementos[d].str=vec->elementos[p].str;
- vec->elementos[p].str=aux;
- p=d;
- }
- }
- if(d>esquerda)quick_aux(vec,esquerda,p);
- if(e<esquerda)quick_aux(vec,p,direita);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement