// Ordenamientos.cpp
//Tipos de ordenamientos con enteros y caracteres utilizando memoria dinamica
//By Norochii
//Estructura de Datos
#include "stdafx.h"
#include <iostream>
#include <string>
#include "time.h"
using namespace std;
class ordenamientos
{
private:
int j,i,temp,x;
int *listaEnteros;
char *listaCaracteres;
public:
ordenamientos();
~ordenamientos();
void ordenamientoBurbuja();
void ordenamientoInsercion();
void ordenamientoShell();
};
ordenamientos::ordenamientos()
{
i=0;
j=0;
temp=0;
x=0;
}
ordenamientos::~ordenamientos()
{}
void ordenamientos::ordenamientoBurbuja()
{
int opc;
cout<<" Metodo Burbuja "<<'\n'<<endl;
cout<<" Que deseas Ordenar"<<endl;
cout<<" 1.- Numeros"<<endl;
cout<<" 2.- Letras"<<endl;
cout<<" Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{
case 1:
cout<<" Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
listaEnteros= new(nothrow) int[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaEnteros[i];
}
for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(listaEnteros[i]>listaEnteros[j])
{
temp=listaEnteros[i];
listaEnteros[i]=listaEnteros[j];
listaEnteros[j]=temp;
}
}
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(i=0; i<x; i++)
{
cout<<endl;
cout<<"Elemento "<< i+1<<": " <<listaEnteros[i]<<endl;;
}
delete[] listaEnteros;
break;
case 2:
cout<<" Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
listaCaracteres= new(nothrow) char[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaCaracteres[i];
}
for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(listaCaracteres[i]>listaCaracteres[j])
{
temp=listaCaracteres[i];
listaCaracteres[i]=listaCaracteres[j];
listaCaracteres[j]=temp;
}
}
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(i=0; i<x; i++)
{
cout<<endl;
cout<<"Elemento "<< i+1<<": " <<listaCaracteres[i]<<endl;
}
delete[] listaCaracteres;
break;
}
}
void ordenamientos::ordenamientoInsercion()
{
int opc;
cout<<" Metodo Por Insercion "<<'\n'<<endl;
cout<<" Que deseas Ordenar"<<endl;
cout<<" 1.- Numeros"<<endl;
cout<<" 2.- Letras"<<endl;
cout<<" Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{
case 1:
cout<<" Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
listaEnteros= new(nothrow) int[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaEnteros[i];
}
for (i = 1; i < x; i++)
{
temp = listaEnteros[i];
j = i - 1;
while ( (listaEnteros[j] > temp) && (j >= 0) )
{
listaEnteros[j + 1] = listaEnteros[j];
j--;
listaEnteros[j + 1] = temp;
}
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(j=0; j<x; j++)
{
cout<<endl;
cout<<"Elemento "<< j+1<<": " <<listaEnteros[j]<<endl;;
}
delete[] listaEnteros;
break;
case 2:
cout<<" Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
listaCaracteres= new(nothrow) char[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaCaracteres[i];
}
for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(listaCaracteres[i]>listaCaracteres[j])
{
temp=listaCaracteres[i];
listaCaracteres[i]=listaCaracteres[j];
listaCaracteres[j]=temp;
}
}
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(j=0; j<x; j++)
{
cout<<endl;
cout<<"Elemento "<< j+1<<": " <<listaCaracteres[j]<<endl;;
}
delete[] listaCaracteres;
break;
}
}
void ordenamientos::ordenamientoShell()
{
int inter,x,n=0,i=0,j=0,k=0,temp;
int opc;
cout<<" Metodo de Shell "<<'\n'<<endl;
cout<<" Que deseas Ordenar"<<endl;
cout<<" 1.- Numeros"<<endl;
cout<<" 2.- Letras"<<endl;
cout<<" Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{
case 1:
cout<<" Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
inter = x/2;
listaEnteros= new(nothrow) int[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaEnteros[i];
}
while(inter>0)
{
for(i=inter;i<x;i++)
{
n++;
j=i-inter;
while(j>=0)
{
k=j+inter;
if(listaEnteros[j]<=listaEnteros[k])
{
j--;
}
else
{
temp=listaEnteros[j];
listaEnteros[j]=listaEnteros[k];
listaEnteros[k]=temp;
j=j-inter;
}
}
}inter = inter/2;
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(j=0; j<x; j++)
{
cout<<endl;
cout<<"Elemento "<< j+1<<": " <<listaEnteros[j]<<endl;;
}
delete[] listaEnteros;
break;
case 2:
cout<<" Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
inter = x/2;
listaCaracteres= new(nothrow) char[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaCaracteres[i];
}
while(inter>0)
{
for(i=inter;i<x;i++)
{
n++;
j=i-inter;
while(j>=0)
{
k=j+inter;
if(listaCaracteres[j]<=listaCaracteres[k])
{
j--;
}
else
{
temp=listaCaracteres[j];
listaCaracteres[j]=listaCaracteres[k];
listaCaracteres[k]=temp;
j=j-inter;
}
}
}inter = inter/2;
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(j=0; j<x; j++)
{
cout<<endl;
cout<<"Elemento "<< j+1<<": " <<listaCaracteres[j]<<endl;;
}
delete[] listaCaracteres;
break;
}
}
void main()
{
int inicio,fin,tiempo,opcion;
inicio=clock();
ordenamientos O;
cout<<" Selecciones el Metodo de Ordenamiento: "<<endl;
cout<<'\n'<<" 1.- Metodo Burbuja "<<endl;
cout<<" 2.- Metodo de Insercion "<<endl;
cout<<" 3.- Metodo de Shell "<<endl;
cout<<" Metodo Numero: ";
cin>>opcion;
system("cls");
switch(opcion)
{
case 1:
O.ordenamientoBurbuja();
break;
case 2:
O.ordenamientoInsercion();
break;
case 3:
O.ordenamientoShell();
break;
fin = clock();
tiempo = fin-inicio;
cout<<'\n'<<"Tiempo de Ejecucion: "<<tiempo<<" Milisegundos"<<endl;
system("PAUSE");
}
}
Saludos Espero dejen sus comentarios :D