Fandom

Scratchpad

PLE:Unidad4Ejercicio20

219,281pages on
this wiki
Add New Page
Discuss this page0 Share
/*
Programa:         Unidad4Ejercicio20.cpp
Fecha:            15/01/2006
Descripción:      Comparativa de métodos de ordenación.

*/
#include <iostream>
#include <conio>
#include <stdlib>
#include <time>
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;
      }
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random wikia