Advertisement
Guest User

Untitled

a guest
Aug 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.  
  6. int main(int argc, char *argv[]) {
  7.  
  8. int i, vet[10];
  9.  
  10. // Cadastrar vet
  11. for(i=0; i < 10 ;i++){
  12.  
  13. printf("Informe o valor da posicao %i: ", i);
  14. scanf("%i", &vet[i]);
  15. }
  16.  
  17. printf("\n\nAntes \n");
  18. // Mostar vet antes
  19. for(i=0; i < 10 ;i++){
  20.  
  21. printf("%i " , vet[i]);
  22. }
  23.  
  24. quickSort(&vet, 0, 9);
  25.  
  26. printf("\n\nDepois \n");
  27. // Mostar vet depois
  28. for(i=0; i < 10 ;i++){
  29.  
  30. printf("%i ", vet[i]);
  31. }
  32.  
  33. return 0;
  34. }
  35.  
  36. // PARA CONQUISTAR
  37. int particionar(int *vetor, int inicio, int fim) {
  38.  
  39. int esq, dir, pivo, aux;
  40.  
  41. esq = inicio;
  42. dir = fim;
  43. pivo = vetor[inicio];// criterio = primeira posicao do vetor
  44.  
  45. while(esq < dir){
  46.  
  47. // indo para direita
  48. while(vetor[esq] <= pivo){
  49. esq++;
  50. }
  51. // indo para esquerda
  52. while(vetor[dir] > pivo){
  53. dir--;
  54. }
  55.  
  56. // efetua a troca de posicoes
  57. if(esq < dir){
  58. aux = vetor[esq];
  59. vetor[esq] = vetor[dir];
  60. vetor[dir] = aux;
  61. }
  62. }
  63.  
  64. // reposicionando o pivo
  65. vetor[inicio] = vetor[dir];
  66. vetor[dir] = pivo;
  67.  
  68. return dir;
  69. }
  70.  
  71. // DIVIDIR
  72. void quickSort(int *vetor, int inicio, int fim) {
  73.  
  74. int pivo;
  75.  
  76. if(fim > inicio){
  77. pivo = particionar (vetor, inicio, fim); // divido em duas partes
  78. quickSort(vetor, inicio, pivo-1); // chamada recursiva
  79. quickSort(vetor, pivo + 1, fim); // chamada recursiva
  80. }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement