Guest User

Untitled

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