Espero que sea de gran ayuda este codigo, es largo pero la verdad muy didactico donde compara el tiempo de ejecuion de cada metodo. Voy a tratar de subirlo a mi cuenta de 4Share para que puedan descargarlo. Cual quier otra pregunta sobre programacion, iphone, ipod. escriban aqui o en mi twitter.
Dentro de poco subire tutoriales sobre jailbreak, unlock..
Por la extension voy a dividir este post en 3:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define Max 10000
using namespace std;
void leerVectorEspecial(int X[Max],int *dimf);
void mostrarVector(int X[Max],int dimX);
int burbuja1(int X[Max],int dimX);
int burbuja2(int X[Max],int dimX);
int burbujaConSenal(int X[Max],int dimX);
int sacudida(int X[Max],int dimx);
int ordenxinserdirec(int X[Max],int dimX);
int ordenxinserxbinar(int X[Max],int dimX);
int seleccion(int X[Max],int dimX);
int shell(int X[Max],int dimX);
int reducerrecursivo (int INI, int FIN,int A[Max]);
int reduceiterativo(int INI,int FIN,int *POS,int X[Max]);
int rapidoiterativo(int X[Max],int N);
int monticulo(int X[Max],int dimX);
int insertaMonticulo(int X[Max],int dimX);
int eliminaMonticulo(int X[Max],int dimX);
int main()
{
int A[Max],nf,opc;
textbackground(8);//color de resalte de las letras
textcolor(1);//color de letra
clrscr();//hace que toda la pantalla tome el colo de resalte de las letras
gotoxy(18,2);//ubica el titulo en el centro de la ventana
printf("|*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-|");
gotoxy(18,3);
printf(" *---->Tipos de Ordenamiento Directo<----*");
gotoxy(18,4);
printf("|*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-|\n\n");
leerVectorEspecial(A,&nf);
mostrarVector(A,nf);
printf("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-\n");
printf("\nOPCIONES DE ORDENAMIENTO:\n\n");
printf("\t <> Burbuja 1---------------<1>\n");
printf("\t <> Burbuja 2---------------<2>\n");
printf("\t <> Burbuja con Se¤al-------<3>\n");
printf("\t <> Burbuja con Sacudida----<4>\n");
printf("\t <> Insercion Directa-------<5>\n");
printf("\t <> Insercion Binaria-------<6>\n");
printf("\t <> Seleccion Directa-------<7>\n");
printf("\t <> Shell-------------------<8>\n");
printf("\t <> Quicksort Recursivo-----<9>\n");
printf("\t <> Quicsort Iterativo------<10>\n");
printf("\t <> Monticulo---------------<11>\n");
printf("\t <> Salir-------------------<12>\n");
printf("-->Ingrese la opcion que desee: ");
scanf("%d",&opc);
switch (opc){
case 1:
printf("\n--------->M.O.D Burbuja 1\n");
burbuja1(A,nf);
mostrarVector(A,nf);
break;
case 2:
printf("\n--------->M.O.D Burbuja 2\n");
burbuja2(A,nf);
mostrarVector(A,nf);
break;
case 3:
printf("\n--------->M.O.D. Burbuja con Se¤al\n");
burbujaConSenal(A,nf);
mostrarVector(A,nf);
break;
case 4:
printf("\n--------->M.O.D Burbuja con Sacudida\n");
sacudida(A,nf);
mostrarVector(A,nf);
break;
case 5:
printf("\n--------->M.O.D Insercion Directa \n");
ordenxinserdirec(A,nf);
mostrarVector(A,nf);
break;
case 6:
printf("\n--------->M.O.D Insercion Binaria\n");
ordenxinserxbinar(A,nf);
mostrarVector(A,nf);
break;
case 7:
printf("\n--------->M.O.D Seleccion directa \n");
seleccion(A,nf);
mostrarVector(A,nf);
break;
case 8:
printf("\n--------->M.O.D Shell\n");
shell(A,nf);
mostrarVector(A,nf);
break;
case 9:
printf("\n--------->M.O.D Quicksort Recursivo\n");
reducerrecursivo (0,nf,A);
mostrarVector(A,nf);
break;
case 10:
printf("\n--------->tM.O.D Quicksort Iterativo\n");
rapidoiterativo(A,nf);
mostrarVector(A,nf);
break;
case 11:
printf("\n--------->M.O.D. Monticulo \n");
monticulo(A,nf);
mostrarVector(A,nf);
break;
case 12:
exit(1);
default:
printf("Numero Invalido\n");
}
return 0;
system("pause");
}
void leerVectorEspecial(int X[Max],int *dimX)
{
int i, N;
srand(time(0));
printf("-->Ingrese el tama¤o del Vector a ordenar: ");
scanf("%d",&N);
for(i=0;i<N;i++){
X[i]=rand()%1000;
}
*dimX=N;
}
void mostrarVector(int X[Max],int dimX)
{
int i,val;
printf("\n\t-*-*-*-*-*-**-*-*-*->Vector sin ordenar<-*-*-*-*-*-*-*-*-*-*-*-*- \n\n");
for(i=0;i<dimX;){
if(i<9){
val=X[i];
printf("|->[%d]=%7d\t",i+1,val);
}
if(i>8 && i<99){
val=X[i];
printf("|->[%d]=%6d\t",i+1,val);
}
if(i>98&&i<999){
val=X[i];
printf("|->[%d]=%5d\t",i+1,val);
}
if(i>998&&i<9999){
val=X[i];
printf("|->[%d]=%4d\t",i+1,val);
}
if(i>9998&&i<99999){
val=X[i];
printf("|->[%d]=%3d\t",i+1,val);
}
if(i>99998&&i<999999){
val=X[i];
printf("|->[%d]=%2d\t",i+1,val);
}
i=i+1;
}
printf("\n");
getch();
printf("--->Presione una tecla para continuar<---");
}
//-->1
No hay comentarios.:
Publicar un comentario