[C con Clase] Recursividad
Joe Tend
neojtr en hotmail.com
Sab Nov 21 00:21:04 CET 2009
Hola a todos, en la uni me pidieron un programa que utilize varios metodos de ordenamiento, ya hice varios pero el quicksort se cuelga y ni idea de el por que he probado cambiar varias funciones y la misma del proceso de quicksort pero sigue sin andar.. una manito no caeria mal, aca esta el codigo de la funcion y las funciones que ahi se usan... gracias por vuestra atencion :-)
struct pers
{
unsigned short edad;
char nomb[20];
char apel[20];
};
/***********************************************/
void QuiNomb(pers vector[], short inicio, short fin)
{
if(inicio<fin)
{
short pivote1 = procesonomb(vector,inicio,fin);
QuiNomb(vector,inicio,pivote1-1);
QuiNomb(vector,pivote1+1,fin);
}
}
short procesonomb(pers vector[], short inic, short fini)
{
pers persaux;
short izq = inic; short der = fini;
pers pivote2;
copiar(pivote2,vector[inic]);
while(izq < der)
{
while(menor(pivote2.nomb,vector[der].nomb)) der--;
while((menor(vector[izq].nomb,pivote2.nomb))&&(izq<der)) izq++;
if(izq<der)
{
copiar(persaux,vector[der]);
copiar(vector[der],vector[izq]);
copiar(vector[izq],persaux);
}
}
copiar(persaux,vector[inic]);
copiar(vector[inic],vector[der]);
copiar(vector[der],persaux);
return der;
}
/*************************************************/
void copiar(pers &prim, pers &seg)
{
strcpy(prim.nomb, seg.nomb);
strcpy(prim.apel, seg.apel);
prim.edad = seg.edad;
}
/*************************************************/
bool menor(char pa1[20],char pa2[20])
{
short i;
if(strlen(pa1)<=strlen(pa2))
{
for(i=0; i<strlen(pa1); i++)
{
if (pa1[i]<pa2[i]) return true;
if (pa2[i]<pa1[i]) return false;
} if(i==strlen(pa1)) return true;
} else {
for(i=0; i<strlen(pa2); i++)
{
if (pa1[i]<pa2[i]) return true;
if (pa2[i]<pa1[i]) return false;
} if(i==strlen(pa2)) return false;
}
} /*previamente me aseguro que las primeras letras sean mayusculas y las demás minusculas..*/
/*No he querido pasar a memoria dinámica porque de este modo es como se ha venido trabajando en el semestre.. sería mi última opción...*/
_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091120/045a5faf/attachment.html>
Más información sobre la lista de distribución Cconclase