• Miércoles 8 de Mayo de 2024, 04:14

Autor Tema:  Re: Código del Quicksort  (Leído 2677 veces)

Ciudad Nocturna

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
    • http://www.ciudadnocturna.tk
Re: Código del Quicksort
« en: Domingo 4 de Mayo de 2003, 18:59 »
0
Hola, tengo un problema con el código fuente de este algoritmo de busqueda, así que se alguien pudiera darme el código implementado en c++, pues me sería de gran utilidad. gracias.

Un saludo.
IberMap Software

Iluvatarm

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Código del Quicksort
« Respuesta #1 en: Lunes 5 de Mayo de 2003, 14:51 »
0
Que problema tienes exactamente? a lo mejor te podemos ayudar

suerte!

Ciudad Nocturna

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
    • http://www.ciudadnocturna.tk
Re: Código del Quicksort
« Respuesta #2 en: Lunes 5 de Mayo de 2003, 22:04 »
0
Pues mira yo estoy intentando programar la función de busqueda quicksort, cuando ejecuto el programa donde la uso al llegar al punto donde debiera realizar el ordenado el programa casca completamente y deja de funcionar.

Te muestro el codigo que porgramado para que le heches un vistazo.

la llamada que utilizo es:
Quicksort (TFFichas,0,iNumFichas-1);

void Quicksort (TFichaAlumnos Libro[iMAX], int i, int d)

{

if (i>=d)

return;

         TFichaAlumnos Aux;
         int m=i;
         int n=d+1;

         long pivote = Libro.Codigo;

         while (TRUE)

            {
               do
                  {
                     m++;
                  }
               
               while (Libro[m].Codigo < pivote);
               
               do
                  {
                     n--;   
                  }
               
               while (Libro[n].Codigo > pivote);

               if (m >= n)

                  {
                     Aux = Libro[m];
                     Libro[m]= Libro[n];
                     Libro[n] = Aux;
                  }
            }
         
         Libro=Libro[n];
         Libro[n].Codigo =pivote;

         Quicksort (Libro,i,n-1);
         Quicksort (Libro,n+1,d);
      
}

Gracias, UN Saludo.

visita www.ciudadnocturna.tk
IberMap Software

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Código del Quicksort
« Respuesta #3 en: Lunes 5 de Mayo de 2003, 22:19 »
0
Oye , tal vez te pueda ayudar pero necesito que me des más especificaciones del programa, porque no se de que consta el tipo de dato que has definido.

Seria buena idea publicar el codigo completo, para asi poderte ayudar mejor y mas facilmente.

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Ciudad Nocturna

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
    • http://www.ciudadnocturna.tk
Re: Código del Quicksort
« Respuesta #4 en: Lunes 5 de Mayo de 2003, 22:58 »
0
Este es un pequeño programa que he hecho para probar esta función, porque es realidad la necesito para un programa un poco más amplio, pero este es código que he preparado para su prueba. Como comente en el post anterior, el programa al ejecutarse la toma de datos la realiza adecuadamente pero al llegar a ordenarlo casca totalmente.

Aui os muestro todo el código:

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define iMAX 100
#define iNOM 50

enum Bool {FALSE, TRUE};

struct TFecha
   
   {
      int iDia, iMes, iYear;
   };

struct TDni

   {
      long iNif;
      char Letra;
   };

struct TNotas

   {
      int Mates;
      int Ingles;
      int Tecnologia;
      int Fisica;
      int Contabilidad;
      int Tog;
      int Metodologia;
      int So;
   };

struct TFichaAlumnos

   {
      TFecha fechanacimiento;
      char szNombre [iNOM];
      TDni DniAlum;
      TNotas NotaAlum;
      long Codigo;
   };


void Mostrar (TFichaAlumnos Libro [iMAX], int iNum);
void Leer (TFichaAlumnos Libro [iMAX], int * iNum);
void Quicksort (TFichaAlumnos Libro [iMAX], int i, int d);

void main ()

{

   TFichaAlumnos TFFichas [iMAX] ={0};
   int iNumFichas =0;
   int i=0;

   Leer (TFFichas,&iNumFichas);
   cout <<iNumFichas;
   Quicksort (TFFichas,0,iNumFichas-1);

   Mostrar (TFFichas,iNumFichas);

}


void Leer (TFichaAlumnos Libro [iMAX], int * iNum)

{

   char chOk='s';

   system ("cls");
   
   while (chOk != 'n')

      {
         system ("cls");
         cout <<"nnintro codigo: ";
         cin >> Libro[*iNum].Codigo;
         (*iNum)++;

         cout <<"nn¿Desea Introducir más fichas (s/n): ";
         cin >> chOk;

         if (chOk == 'S' || chOk == 'N')

            {
               chOk = tolower (chOk);
            }
      }
   cin.clear();

}

////////////////////////////////////////////////////////////////////

void Quicksort (TFichaAlumnos Libro [iMAX], int i, int d)

{

   if (i>=d)

      return;

         TFichaAlumnos Aux;
         int m=i;
         int n=d+1;

         long pivote = Libro.Codigo;

         while (TRUE)

            {
               do
                  {
                     m++;
                  }
               
               while (Libro[m].Codigo < pivote);
               
               do
                  {
                     n--;   
                  }
               
               while (Libro[n].Codigo > pivote);

               if (m >= n)

                  {
                     Aux = Libro[m];
                     Libro[m]= Libro[n];
                     Libro[n] = Aux;
                  }
            }
         
         Libro=Libro[n];
         Libro[n].Codigo =pivote;

         Quicksort (Libro,i,n-1);
         Quicksort (Libro,n+1,d);
      
}
//////////////////////////////////////////////////////////

void Mostrar (TFichaAlumnos Libro [iMAX], int iNum)

{

   int i=0;

   system ("cls");

   for (i=0; i != iNum; i++)

      {
         cout << Libro.Codigo <<"n";
   
      }

}

Gracias UN saludo.

visitar www.ciudadnocturna.tk
IberMap Software

Ciudad Nocturna

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
    • http://www.ciudadnocturna.tk
Código del Quicksort
« Respuesta #5 en: Viernes 16 de Mayo de 2003, 19:18 »
0
Ya encontré la soloción a mi problema, gracias a todos los que se interesaron.
IberMap Software