Advertisement
a20121248

ordenar

Oct 1st, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. /* Algoritmo quicksort para un arreglo de *void */
  2.  
  3. // Ejemplo de un funcion de comparacion:
  4. // "regPer" apunta a un arr[] de *void donde el primer elemento es una cadena
  5. #include <cstring>
  6. bool menorNomb(void* regPer1, void* regPer2) {
  7.     void** arr1 = (void**) regPer1;
  8.     void** arr2 = (void**) regPer2;
  9.     if (strcmp((char*) arr1[0], (char*) arr2[0]) < 0)
  10.         return true;
  11.     return false;
  12. }
  13.  
  14. void swap(void* &regCur1, void* &regCur2) {
  15.     void* aux = regCur1;
  16.     regCur1 = regCur2;
  17.     regCur2 = aux;
  18. }
  19.  
  20. void quick_sort(void* arr[], int izq, int der) {
  21.     if (izq >= der)
  22.         return;
  23.     swap(arr[izq], arr[(izq + der) / 2]);
  24.     int limite = izq;
  25.     for (int i = izq + 1; i <= der; ++i)
  26.         if (menorNomb(arr[i], arr[izq])) { // if (arr[i] < arr[izq])
  27.             ++limite;
  28.             swap(arr[limite], arr[i]);
  29.         }
  30.     swap(arr[izq], arr[limite]);
  31.     quick_sort(arr, izq, limite - 1);
  32.     quick_sort(arr, limite + 1, der);
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement