Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 2Fac3R en 29 Julio 2015, 20:47 pm



Título: [Métodos de ordenamiento] QuickSort [C++]
Publicado por: 2Fac3R en 29 Julio 2015, 20:47 pm
Buenas!.

El método de ordenamiento quicksort (http://en.wikipedia.org/wiki/Quicksort) es un método muy eficaz a la hora de ordenar datos, les comparto un código que implemente en un proyecto escolar, está basado para ordenar fechas de salida de vuelos, pero ustedes pueden implementarlo para ordenar cualquier otro tipo de dato.

Código
  1. void QuickSortF( N_Vuelo** arr, int izq, int der ){
  2. int g, h, medio;
  3. N_Vuelo *pivote, *aux;
  4. medio = ( izq + der )/2;
  5. pivote = arr[medio];
  6. g = izq;
  7. h = der;
  8.  
  9. while( g <= h ){
  10.  
  11. while ( arr[g]->getDato()->getFS(1) < pivote->getDato()->getFS(1) ) { g++; }
  12. while ( pivote->getDato()->getFS(1) < arr[h]->getDato()->getFS(1) ) { h--; }
  13.  
  14. if( g <= h ){
  15. aux = arr[g];
  16. arr[g] = arr[h];
  17. arr[h] = aux;
  18. g++;
  19. h--;
  20. }
  21. }
  22.  
  23. if ( izq < h ) { QuickSortF(arr, izq, h); }
  24. if ( g < der ) { QuickSortF(arr, g, der); }
  25. }
  26.  

En los condicionales if iría la condición de ordenamiento de el tipo de dato que quieras implementar, cualquier duda y/o comentario hazmelo saber!.

Zalu2