PLE:Unidad5Ejercicio21

/*

Programa:        Unidad5Ejercicio20.cpp

Descripción:     Comparativa de métodos de ordenación.




 * 1) include


 * 1) include


 * 1) include


 * 1) include

using namespace std;

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;

}

}