Advertisement
Miquel_Fuster

Algoritmo QuickSort

Jan 11th, 2022 (edited)
946
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.91 KB | None | 0 0
  1. void intercambiar(int *a, int *b) {
  2.     int aux = *a;
  3.     *a = *b;
  4.     *b = aux;
  5. }
  6.  
  7. void ordenar(int array[], int primero, int ultimo) {
  8.     int fulcro = ultimo;
  9.     int i_iz = primero;
  10.     int i_der = fulcro - 1;
  11.  
  12.     if(primero >= ultimo) return;
  13.  
  14.     while(i_iz < i_der) {
  15.         while(array[i_iz]  < array[fulcro] && i_iz < i_der) i_iz++;
  16.         while(array[i_der] > array[fulcro] && i_iz < i_der) i_der--;
  17.         intercambiar(array+i_iz, array+i_der);
  18.     }
  19.  
  20.     intercambiar(array+i_iz, array+fulcro);
  21.     fulcro = i_iz;
  22.    
  23.     ordenar(array, primero, fulcro - 1);
  24.     ordenar(array, fulcro + 1, ultimo);
  25. }
  26.  
  27. int main() {
  28.     int array[] = {3, 5, 1, 2, 7, 1, 3, 2};
  29.    
  30.     for(size_t i=0; i<sizeof(array)/sizeof(array[0]); ++i) {
  31.         printf("%d ", array[i]);
  32.     }
  33.  
  34.     ordenar(array, 0, sizeof(array)/sizeof(array[0]) - 1);
  35.    
  36.     puts("\n\nORDENADO\n");
  37.    
  38.     for(size_t i=0; i<sizeof(array)/sizeof(array[0]); ++i) {
  39.         printf("%d ", array[i]);
  40.     }
  41. }
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement