Necesito ayuda!.. por favor..

cerecer
06 de Mayo del 2006
Hola Necesito un programa de metodos de ordenamiento con las funciones de los metodos: burbuja, burbuja con seña, sacudida, insersion directa, insersion binaria, quick short, shell. Yo hice mi propio programa pero no ordena bien los numeros y ya no tengo tiempooo!!, por favor pasenme un programa, aki les muestro el ke yo hice :

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#define f 0
#define v 1
#define tdat long double


tdat a[5];
tdat b=5;

void intr()
{
clrscr();
for(int i=0;i<b;i++)
{
cout<<"Introduce el numero deseado :"<<" ";
cin>>a[i];
}
}


void desp()
{
textcolor(9);
for(int i=0;i<b;i++)
{
cout<<a[i]<<" ";
}
getch();
}


void burbuja()
{
clrscr();
int aux;
for(int i=0;i<b-1;i++)
{
for(int j=0;j<b-i;j++)
{
if(a[j]>a[j+1])
{
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
cout<<"\n ";
desp();
}
}
}

void burbuja2()
{
clrscr();
int i=1,band=f,aux;
while(i<=b-1 && band==f)
{
band=v;
for(int j=0;j<b-i;j++)
{
if(a[j]>a[j+1])
{
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
band=f;
}
desp();
cout<<"\n";
}
i=i+1;
}
}
void insdir()
{
clrscr();
int aux,k;
for(int i=1;i<b;i++)
{
aux=a[i];
k=i-1;
while(aux<a[k] && k>=1)
{
a[k+1]=a[k];
k=k-1;
desp();
cout<<"\n";
}
if(a[k]<=aux)
{
a[k+1]=aux;
desp();
cout<<"\n";
}
else
{
a[k+1]=a[k];
a[k]=aux;
desp();
cout<<"\n";
}
}
}
void sacudida()
{
int i,izq,der,k,aux;
izq=2;
der=b;
k=b;
clrscr();
while(izq<=der)
{
for(i=der;i<izq;i--)
{
if(a[i-1]>a[i])
{
aux=a[i-1];
a[i-1]=a[i];
a[i]=aux;
k=i;
desp();
cout<<"\n";
}
}
izq=k+1;
for(i=izq;i<der;i++)
{
if(a[i-1]>a[i])
{
aux=a[i-1];
a[i-1]=a[i];
a[i]=aux;
k=i;
desp();
cout<<"\n";
}
}
der=k-1;
desp();
cout<<"\n";

}
getch();
}

void insbin()
{
int i,aux,izq,der,m,j;
clrscr();
for(i=1;i<b;i++)
{
aux=a[i];
izq=0;
der=i-1;
while(izq<=der)
{
m=((izq+der)/2);
if(aux<a[m])
{
der=m-1;
}
else
{
izq=m+1;
}
}
j=i-1;
while(j>=izq)
{
a[j+1]=a[j];
j=j-1;
desp();
cout<<"\n";
}
a[izq]=aux;
desp();
cout<<"\n";
}
}
void seldir()
{
int i,menor,k,j;
clrscr();
for(i=0;i<b-1;i++)
{
menor=a[i];
k=i;
for(j=i+1;j<b;j++)
{
if(a[j]<menor)
{
menor=a[j];
k=j;
}
}
a[k]=a[i];
a[i]=menor;
desp();
cout<<"\n";
}
}

void shell()
{
int INT,i,aux,band;
INT=b+1;
clrscr();
while(INT>1)
{
INT=(INT/2);
band=v;
while(band==v)
{
band=f;
i=1;
while((i+INT)<=b)
{
if(a[i]>a[i+INT])
{
aux=a[i];
a[i]=a[i+INT];
a[i+INT]=aux;
band=v;
desp();
cout<<"\n";
}
i=i+1;
}
}
}
}
void quickshort(int ini,int fin)
{
int ini2,fin2,pos,aux,band;
ini2=ini;
fin2=fin;
pos=ini;
band=1;
clrscr();
while (band==1)
{
band=0;
while((a[pos]<=a[fin2])&&(pos!=fin2))
{
fin2--;
}
if (pos!=fin2)
{
aux=a[pos];a[pos]=a[fin2];
a[fin2]=aux;
pos=fin2;
desp();
cout<<"\n";
while ((a[pos]>=a[ini2])&&(pos!=ini2))
{
ini2++;
}
if(pos!=ini2)
{
band=1;
aux=a[pos];
a[pos]=a[ini2];
a[ini2]=aux;
pos=ini2;
desp();
cout<<"\n";
}
}
}
if ((pos-1)>ini)
{
quickshort(ini,pos-1);
}
if (fin>(pos+1))
{
quickshort(pos+1,fin);
}
}

void main()
{
int opc=0;
clrscr();
while(opc!=9)
{
clrscr();
textbackground(3);
textcolor(4);
gotoxy(37,8); cout<<"M E N U";
gotoxy(23,10); cout<<"1) METODO DE LA BURBUJA";
gotoxy(23,11); cout<<"2) METODO DE LA BURBUJA SE¥AL";
gotoxy(23,12); cout<<"3) METODO DE LA INSERCION BINARIA";
gotoxy(23,13); cout<<"4) METODO DE LA SACUDIDA";
gotoxy(23,14); cout<<"5) METODO DE LA INSERCION DIRECTA";
gotoxy(23,15); cout<<"6) METODO DE LA SELECCION DIRECTA";
gotoxy(23,16); cout<<"7) METODO DE QUICKSHORT";
gotoxy(23,17); cout<<"8) METODO DE SHELL";
gotoxy(23,18); cout<<"9) SALIR";
gotoxy(23,22); cout<<"TECLEE LA OPCION ELEGIDA [ ]";
gotoxy(49,22); cin>>opc;

switch (opc)
{
case 1: intr();
burbuja();
break;
case 2: intr();
burbuja2();
break;
case 3: intr();
insbin();
break;
case 4: intr();
sacudida();
break;
case 5: intr();
insdir();
break;
case 6: intr();
seldir();
break;
case 7: intr();
shell();
break;
case 8: intr();
quickshort(0,9);

return;
}
}
}