Guest User

Quick Sort

a guest
Apr 5th, 2019
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int particiona(int *A, int p, int r)
  5. {
  6. int pivo = p, i, j;
  7. int aux;
  8. pivo = A[r];
  9. i = p - 1;
  10.  
  11. for(j = p; j < r ; j++)
  12. {
  13. if(A[j] <= pivo)
  14. {
  15. i = i + 1;
  16. aux = A[j];
  17. A[j] = A[i];
  18. A[i] = aux;
  19. }
  20. aux = A[i + 1];
  21. A[i + 1] = A[r];
  22. A[r] = aux;
  23. return i++;
  24. }
  25.  
  26. }
  27. void quick(int *A, int p, int r)
  28. {
  29. int pivo;
  30. if(p < r)
  31. {
  32. pivo = particiona(A, p, r);
  33. quick(A, p, pivo - 1);
  34. quick(A, pivo + 1, r);
  35. }
  36. }
  37.  
  38.  
  39. int main()
  40. {
  41. int i, n, p, r;
  42. int *A;
  43. printf("Digite o tamanho da entrada:\n");
  44. scanf("%d", &n);
  45. A = (int*)malloc(sizeof(int) * n);
  46. printf("Digite os numeros:\n");
  47. for(i = 0; i <= n - 1; i++)
  48. {
  49. scanf("%d", &A[i]);
  50. }
  51.  
  52. printf("\n");
  53. quick(A, 0, n - 1);
  54. for(i = 0; i <= n - 1; i++)
  55. {
  56. printf("%d-", A[i]);
  57. }
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment