Advertisement
juanjo12x

Quicksort

Apr 10th, 2014
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 10
  5.  
  6.  
  7. void pprint(int A[]){
  8.     int i;
  9.     for(i=0;i<MAX;i++)
  10.         printf("%d ", A[i]);
  11.     printf("\n");
  12.    
  13. }
  14.  
  15. void intercambiar(int* elem1, int* elem2){
  16.     int temp = *elem1;
  17.     *elem1 = *elem2;
  18.     *elem2 = temp;
  19.    
  20. }
  21.  
  22. int seleccionar_pivote(int A[], int izq, int der){
  23.     return A[izq];
  24. }
  25.  
  26.  
  27. int ejecutar_particion(int A[], int izq, int der, int pivote){
  28.     int j;
  29.    
  30.     int i=izq+1;
  31.     for (j=izq+1;j<=der;j++){
  32.         if (A[j]<pivote){
  33.             intercambiar(&A[i], &A[j]);
  34.             i++;
  35.         }
  36.     }
  37.     intercambiar(&A[izq], &A[i-1]);
  38.     return i-1;
  39.    
  40. }
  41.  
  42. void quick_sort(int A[], int izq, int der){
  43.     if (izq>=der)
  44.         return;
  45.     int pivote = seleccionar_pivote(A, izq, der);
  46.     int pos_pivote = ejecutar_particion(A, izq, der, pivote);
  47.     quick_sort(A, izq, pos_pivote-1);
  48.     quick_sort(A, pos_pivote+1, der);
  49.    
  50. }
  51.  
  52. int main(int argc, char** argv) {
  53.    
  54.     int N[MAX] = {1, 6, 3, 8, 9, 2, 5, 0, 7, 4};
  55.    
  56.     printf("Arreglo Original:\n");
  57.     pprint(N);
  58.    
  59.     quick_sort(N,0,MAX-1);
  60.    
  61.     printf("Arreglo Ordenado:\n");
  62.     pprint(N);
  63.    
  64.     return (EXIT_SUCCESS);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement