Guest User

Untitled

a guest
Dec 15th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. /*********** Autor:
  2. ***********************/
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7.  
  8. /**/
  9. void Fill_Vector (int vect[], int vect_size);
  10.  
  11. /**/
  12. void Quick_Sort (int vect[], int p ,int vect_size);
  13.  
  14. int main ()
  15. {
  16. long int num_trocas = 0, num_comparacoes = 0,p;
  17.  
  18.  
  19.  
  20. int vect_size = 10;
  21.  
  22. int elements[vect_size];
  23.  
  24. /*Inserindo elementos*/
  25. Fill_Vector (elements,vect_size);
  26.  
  27. /*Verificando os valores inseridos*/
  28. int i;
  29. // printf("Valores: \n");
  30. for (i = 0; i < vect_size; i++) {
  31. printf("Posição: %d, valor: %d\n", i, elements[i]);
  32. }
  33.  
  34. /*Ordenando o vetor*/
  35.  
  36.  
  37. clock_t clock_start, clock_end;
  38.  
  39. double elapsed;
  40.  
  41. clock_start = clock();
  42.  
  43. Quick_Sort (elements, p ,vect_size);
  44.  
  45. clock_end = clock();
  46.  
  47. elapsed = ((double) (clock_end - clock_start)) / CLOCKS_PER_SEC;
  48.  
  49. printf ("Tam. do vetor: %d, n. de trocas: %d, n. de comparações: %d, tempo de execução : %f\n", vect_size, num_trocas, num_comparacoes, elapsed);
  50.  
  51. system("pause");
  52.  
  53. //printf("\n\nValores ordenados: \n");
  54. for (i = 0; i < vect_size; i++) {
  55. printf("Posição: %d, valor: %d\n", i, elements[i]);
  56.  
  57. }
  58. system("pause");
  59.  
  60. return 0;
  61. }
  62.  
  63.  
  64. /*Esta função ... */
  65.  
  66. int Particiona (int vect[], int p,int vect_size)
  67. {
  68. p = 0;
  69. int x = vect[vect_size];
  70. int i = p-1;
  71. int temp;
  72.  
  73. for(int j = p; j < vect_size; j++)
  74. {
  75.  
  76. if (vect[j] >= x)
  77. {
  78. i++;
  79.  
  80. temp = vect[i];
  81. vect[i] = vect[j];
  82. vect[j] = temp;
  83.  
  84. }
  85. }
  86. int aux;
  87. aux = vect[i+1];
  88. vect[i+1] = vect[vect_size];
  89. vect[vect_size] = aux;
  90.  
  91. return i+1;
  92. }
  93.  
  94.  
  95.  
  96. void Quick_Sort (int vect[], int p ,int vect_size)
  97. {
  98. if(p < vect_size)
  99. {
  100. int q = Particiona(vect, p ,vect_size);
  101. Quick_Sort(vect, p, q-1);
  102. Quick_Sort( vect, q+1, vect_size);
  103. }
  104.  
  105. }
  106.  
  107.  
  108. /*Esta função recebe um vetor {vect} vazio de tamanho {vect_size}
  109. e o preenche completamente com valores aleatórios.*/
  110. void Fill_Vector (int vect[], int vect_size)
  111. {
  112. /*Inicializando a função que gera números aleatórios com uma semente {time(NULL)}.
  113. Isso evita que a sequência de números aleatórios gerada seja sempre
  114. a mesma. Em caso de curiosidade, comente a chamada abaixo e verifique. */
  115. srand(time(NULL));
  116.  
  117. /*Constante que define o maior valor inteiro possível no vetor*/
  118. int max_value = 10000;
  119.  
  120. int i;
  121. for (i = 0; i < vect_size; i++) {
  122. /*O módulo abaixo evita que os valores sejam maiores que {max_value}*/
  123. vect[i] = rand() % max_value;
  124. }
  125. }
Add Comment
Please, Sign In to add comment