Herowaree

quicksort

Apr 26th, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. //UFPB - 06/08/2016 - Aluno: Thulio Guilherme Silva de Amorim - Matrícula: 11328381
  2. //Algoritmos baseado nas aulas de Ordenação e Recuperação de Dados ministradas pelo professor Fernando Matos - [email protected]
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. void showVector(int* vector, int size){
  8. for(int i = 0; i < size; i++){
  9. printf("%d ", vector[i]);
  10. }
  11. printf("\n");
  12. }
  13.  
  14. int partition(int* vector, int begin, int end){
  15. int pivot, top, i;
  16. pivot = vector[begin];
  17. top = begin;
  18. for(i = begin + 1; i <= end; i++){
  19. if(vector[i] < pivot){
  20. vector[top] = vector[i];
  21. vector[i] = vector[top + 1];
  22. top++;
  23. }
  24. }
  25.  
  26. vector[top] = pivot;
  27. return top;
  28. }
  29.  
  30. void quicksort(int* vector, int begin, int end){ //Best case: O(n*logn) - Worst case: O(n²)
  31. int middle;
  32. if(begin < end){
  33. middle = partition(vector, begin, end);
  34. quicksort(vector, begin, middle - 1);
  35. quicksort(vector, middle + 1, end);
  36. }
  37. }
  38.  
  39. int main(){
  40. int n;
  41.  
  42. scanf("%d", &n);
  43.  
  44. int vector[n];
  45.  
  46. for(int i = 0; i < n; i++){
  47. scanf("%d", &vector[i]);
  48. }
  49.  
  50. quicksort(vector, 0, n - 1);
  51.  
  52. showVector(vector, n);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment