Fandom

Scratchpad

PLE:Unidad4Ejercicio20

216,217pages on
this wiki
Add New Page
Discuss this page0 Share

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.

/*
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;
      }
}

Also on Fandom

Random wikia