[Métodos de ordenamiento] QuickSort [C++]

  • 5 Respuestas
  • 7661 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado 2Fac3R

  • *
  • Underc0der
  • Mensajes: 248
  • Actividad:
    10%
  • Reputación 0
  • Why be a king, when you can be a god
  • Skype: rockeg_18
  • Twitter: @2Fac3R
    • Ver Perfil
    • Escuela de Hackers & Programación

[Métodos de ordenamiento] QuickSort [C++]

  • en: Octubre 17, 2014, 04:15:59 pm
Buenas!.

El método de ordenamiento Solo los usuarios pueden ver los links. Registrate o Ingresar 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: C++
  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
Escuela de Hackers & Programación.
Solo los usuarios pueden ver los links. Registrate o Ingresar

Desconectado mrt694

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
  • Ya dormiré cuando esté muerto
    • Ver Perfil

Re:[Métodos de ordenamiento] QuickSort [C++]

  • en: Octubre 17, 2014, 04:59:17 pm
Gran aporte, es uno de los algoritmos más rápidos. Yo añadiría un procedimiento de barajado de datos antes de ordenarlos, para evitar que ocurriese el peor de los casos a la hora de ordenarlos. Por ejemplo: ordenar de mayor a menor y que los datos estén colocados de menor a mayor.
De esta forma te aseguras que el algoritmo siempre cumpla el caso medio y no aparezcan picos en el tiempo de ejecución.
Un saludo


Conectado 2Fac3R

  • *
  • Underc0der
  • Mensajes: 248
  • Actividad:
    10%
  • Reputación 0
  • Why be a king, when you can be a god
  • Skype: rockeg_18
  • Twitter: @2Fac3R
    • Ver Perfil
    • Escuela de Hackers & Programación

Re:[Métodos de ordenamiento] QuickSort [C++]

  • en: Octubre 17, 2014, 08:38:30 pm
Solo los usuarios pueden ver los links. Registrate o Ingresar
Gran aporte, es uno de los algoritmos más rápidos. Yo añadiría un procedimiento de barajado de datos antes de ordenarlos, para evitar que ocurriese el peor de los casos a la hora de ordenarlos. Por ejemplo: ordenar de mayor a menor y que los datos estén colocados de menor a mayor.
De esta forma te aseguras que el algoritmo siempre cumpla el caso medio y no aparezcan picos en el tiempo de ejecución.
Un saludo

Así es, es un tema que había dejado de lado por la cantidad de código que nos dejaron hacer jaja   ::) pero si que es correcto hacer un barajado antes de ordenarlos.
Zalu2!
Escuela de Hackers & Programación.
Solo los usuarios pueden ver los links. Registrate o Ingresar

Desconectado rfgaz

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:[Métodos de ordenamiento] QuickSort [C++]

  • en: Febrero 02, 2016, 07:30:59 pm
Que es lo que quiere decir  "->",
while ( arr[g]->getDato()->getFS(1) < pivote->getDato()->getFS(1) )

Gracias por el codigo.

Conectado 2Fac3R

  • *
  • Underc0der
  • Mensajes: 248
  • Actividad:
    10%
  • Reputación 0
  • Why be a king, when you can be a god
  • Skype: rockeg_18
  • Twitter: @2Fac3R
    • Ver Perfil
    • Escuela de Hackers & Programación

Re:[Métodos de ordenamiento] QuickSort [C++]

  • en: Febrero 03, 2016, 12:23:29 am
Solo los usuarios pueden ver los links. Registrate o Ingresar
Que es lo que quiere decir  "->",
while ( arr[g]->getDato()->getFS(1) < pivote->getDato()->getFS(1) )

Gracias por el codigo.

Es el operador para acceder a los miembros de un objeto a través de un puntero.
Te recomiendo leas algo sobre POO
Zalu2
Escuela de Hackers & Programación.
Solo los usuarios pueden ver los links. Registrate o Ingresar

Desconectado rfgaz

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:[Métodos de ordenamiento] QuickSort [C++]

  • en: Febrero 08, 2016, 03:06:56 pm
Gracias