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

 #475515  por 2Fac3R
 28 Jul 2015, 22:35
Buenas!.

El método de ordenamiento [ Debe registrarse para ver este enlace ]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.
void QuickSortF( N_Vuelo** arr, int izq, int der ){
        int g, h, medio;
        N_Vuelo *pivote, *aux;
        medio = ( izq + der )/2;
        pivote = arr[medio];
        g = izq;
        h = der;
 
        while( g <= h ){
 
                while ( arr[g]->getDato()->getFS(1) < pivote->getDato()->getFS(1) ) { g++; }
                while ( pivote->getDato()->getFS(1) < arr[h]->getDato()->getFS(1) ) { h--; }
 
                if( g <= h ){
                        aux = arr[g];
                        arr[g] = arr[h];
                        arr[h] = aux;
                        g++;
                        h--;
                }
        }
 
        if ( izq < h ) { QuickSortF(arr, izq, h); }
        if ( g < der ) { QuickSortF(arr, g, der); }
}
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
 #475534  por 2Fac3R
 29 Jul 2015, 01:14
N_Vuelo.h
// N_VUELO.H
#include <iostream>
using namespace std;

#include "Vuelo.h"

#ifndef __N_VUELO_H_INCLUDED__
#define __N_VUELO_H_INCLUDED__

class N_Vuelo{
	private:
		Vuelo dato;
		N_Vuelo* siguiente;
		N_Vuelo* anterior;

	public:
		N_Vuelo(void) { siguiente = anterior = NULL; }

		N_Vuelo( Vuelo* v, N_Vuelo* s = NULL, N_Vuelo* a = NULL ){
			dato = *v;

			siguiente = s;
			anterior = a;
		}

		void setDato( Vuelo* d )    { dato = *d; }
		void setSig( N_Vuelo* pos ) { siguiente = pos; }
		void setAnt( N_Vuelo* pos ) { anterior = pos; }

		Vuelo* getDato()  { return &dato; }
		N_Vuelo* getSig() { return siguiente; }
		N_Vuelo* getAnt() { return anterior; }
};

#endif
Te podría pasar vuelo.h (te tendría que pasar muchos más ligados) pero la idea ya está reflejada, cualquier duda o comentario es bienvenido.
Zalu2