PLE:Unidad4Ejercicio20

/* Programa:        Unidad4Ejercicio20.cpp Fecha:           15/01/2006 Descripción:     Comparativa de métodos de ordenación.

using namespace std;
 * 1) include
 * 2) include
 * 3) include
 * 4) include
 * 1) include

const int MAX = 40000;

// Genera los arrays para las pruebas void generaAleatorio(int array[]); void generaOrdenado(int array[]); void generaDesordenado(int array[]); // Imprime el array void muestra(int array[]); // Métodos de ordenación void ordenaBurbuja(int array[]); void ordenaSeleccion(int array[]); void ordenaInsercion(int array[]);

void main {     int num[MAX], i, n, pos; time_t tiempo1, tiempo2; double numSecAOMet1, numSecADMet1, numSecAAMet1; double numSecAOMet2, numSecADMet2, numSecAAMet2; double numSecAOMet3, numSecADMet3, numSecAAMet3;

randomize;

//     // METODO 1 BURBUJA //

cout << "Metodo 1 ...."; // Generamos array ordenado generaOrdenado(num);

// ordeno el array tiempo1 = time(NULL); ordenaBurbuja(num); tiempo2 = time(NULL); numSecAOMet1 = difftime(tiempo2, tiempo1);

// Generamos array ordenado generaDesordenado(num);

// ordeno el array tiempo1 = time(NULL); ordenaBurbuja(num); tiempo2 = time(NULL); numSecADMet1 = difftime(tiempo2, tiempo1);

// Generamos array ordenado generaAleatorio(num);

// ordeno el array tiempo1 = time(NULL); ordenaBurbuja(num); tiempo2 = time(NULL); numSecAAMet1 = difftime(tiempo2, tiempo1);

//     // METODO 2 SELECCIÓN //

cout << endl << "Metodo 2 ...."; // Generamos array ordenado generaOrdenado(num);

// ordeno el array tiempo1 = time(NULL); ordenaSeleccion(num); tiempo2 = time(NULL); numSecAOMet2 = difftime(tiempo2, tiempo1);

// Generamos array ordenado generaDesordenado(num);

// ordeno el array tiempo1 = time(NULL); ordenaSeleccion(num); tiempo2 = time(NULL); numSecADMet2 = difftime(tiempo2, tiempo1);

// Generamos array ordenado generaAleatorio(num);

// ordeno el array tiempo1 = time(NULL); ordenaSeleccion(num); tiempo2 = time(NULL); numSecAAMet2 = difftime(tiempo2, tiempo1);

//     // METODO 3 INSERCIÓN //

cout << endl << "Metodo 3 ...."; // Generamos array ordenado generaOrdenado(num);

// ordeno el array tiempo1 = time(NULL); ordenaInsercion(num); tiempo2 = time(NULL); numSecAOMet3 = difftime(tiempo2, tiempo1);

// Generamos array ordenado generaDesordenado(num);

// ordeno el array tiempo1 = time(NULL); ordenaInsercion(num); tiempo2 = time(NULL); numSecADMet3 = difftime(tiempo2, tiempo1);

// Generamos array ordenado generaAleatorio(num);

// ordeno el array tiempo1 = time(NULL); ordenaInsercion(num); tiempo2 = time(NULL); numSecAAMet3 = difftime(tiempo2, tiempo1);

//     // MOSTRAMOS RESULTADOS EN PANTALLA //     cout << endl; cout << "Metodo\tArray Ord.\tArray Des.\tArray Ale." << endl; cout << "Burbuja \t" << numSecAOMet1 << '\t' << numSecADMet1 << '\t' << numSecAAMet1 << endl; cout << "Seleccion\t" << numSecAOMet2 << '\t' << numSecADMet2 << '\t' << numSecAAMet2 << endl; cout << "Insercion\t" << numSecAOMet3 << '\t' << numSecADMet3 << '\t' << numSecAAMet3 << endl;

cin.ignore; cin.get; }

void generaAleatorio(int array[]) {     // Asignamos valores aleatorios for(int i = 0; i < MAX; i++) array[i] = rand; }

void generaOrdenado(int array[]) {     // Asignamos valores ordenados ascendentemente for(int i = 0; i < MAX; i++) array[i] = i; }

void generaDesordenado(int array[]) {     // Asignamos valores ordenados ascendentemente for(int i = 0; i < MAX; i++) array[i] = MAX-i; }

void muestra(int array[]) {     int i;      for(i = 0; i < MAX; i++) cout << array[i] << '\t'; }

void ordenaSeleccion(int array[]) {     int i, j, k, aux; for (i = 0; i < MAX-1; i++) {	     k = i;      	aux = array[i]; for (j = i+1; j <= MAX-1; j++) {	     	if (array[j] < aux) {			     k = j;      			aux = array[j]; }     	}	      array[k] = array[i]; array[i] = aux; } }

void ordenaBurbuja(int array[]) {     int i, j, aux; for(i=0; i < MAX; i++) {	     for(j = 1 ;j < MAX - i; j++) {	     	if(array[j-1] > array[j]) {			     aux = array[j]; array[j] = array[j-1]; array[j-1] = aux; }     	}      } }

void ordenaInsercion(int array[]) {     int i, j, aux; for (i=1; i <= MAX-1; i++) {	     aux = array[i]; j = i-1; while (array[j] > aux && j >= 0) {	     	array[j+1] = array[j]; j = j-1; }	     array[j+1]= aux; } }