Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ship en 11 Noviembre 2011, 07:50 am



Título: Metodo quicksort en java
Publicado por: ship en 11 Noviembre 2011, 07:50 am
ayuda
tengo un codigo en java de los metodos de busqueda
pero me marca error al llamar este metodo en el main al pasar los parametros de quicksort alguien puede corregir mi codigo porfavor
Código
  1. public void quicksort(int a[],int inf,int sup)
  2.    {
  3.        int izq,der;
  4.        double pivote;
  5.        izq=inf;
  6.        der=sup;
  7.        pivote=a[(izq+der)/2];
  8.        while(izq<der)
  9.        {
  10.            while(a[izq]<pivote && der<sup)
  11.                izq++;
  12.            while(pivote<a[der] && der>inf)
  13.                der--;
  14.  
  15.            if(inf<der) quicksort(a,inf,der);
  16.            if(izq<sup) quicksort(a,izq,sup);
  17.        }
  18.    }
  19.    public static void main(String args[]) throws Exception
  20.    {
  21.    BufferedReader tcld = new BufferedReader(isr);
  22.    String cad;
  23.    busquedas  obj=new busquedas ();
  24.    do
  25.    {
  26.    System.out.println("\n");      
  27.    System.out.println("M&#233;todos de Ordenaci&#243;n\n");
  28.    System.out.println("----Men&#250;---\n");
  29.    System.out.println("0._Ingresar Valores");
  30.   System.out.println("1._Burbuja");
  31.   System.out.println("2._Quick Short");
  32.   System.out.println("3._Shell");
  33.   System.out.println("4._Salir");
  34.    cad=tcld.readLine();
  35.    opc=Integer.parseInt(cad);    
  36.    switch(opc)
  37.    {
  38.     case 0:
  39. }
  40. case 2:
  41.     {
  42.     System.out.print("\nM&#233;todo Quick Short");
  43.     obj.quicksort(a,1,tam-1); //Aqui esta el error
  44.     cad=tcld.readLine();
  45.            opc1=Integer.parseInt(cad);            
  46.         break;
  47.     }
  48.  


Título: Re: Metodo quicksort en java
Publicado por: BlackZeroX en 11 Noviembre 2011, 08:19 am
En donde declarasel array a? tam?... no los veo... identa tu codigo se ve horrendo asi... bueno no horrendo si no que no se puede leer acorde a la idea...

Dulces Lunas!¡.


Título: Re: Metodo quicksort en java
Publicado por: RyogiShiki en 11 Noviembre 2011, 16:24 pm
Tu código es un completo desastre! Por favor idéntalo, haz algo con las llaves que faltan, completa la aprte while del do, Sie stás trabajando con un IDE como NetBeans puedes hacer Alt+Mayus+F y el solo formatea el código. Imagino que el método quickshort pertenece a una clase llamada búsquedas, sería bueno que separaras las dos partes del código en secciones diferentes, y que nos mostraras la clase búsquedas,  y por último usa las etiquetas GeSHi para poner tu código, así es más fácil leerte:
(http://i56.tinypic.com/34erlw6.png)


Título: Re: Metodos en java
Publicado por: ship en 12 Noviembre 2011, 18:02 pm
ok pues verifique mi codigo modifique algunas cosas y listo ya tengo lo que necesito...funciona mi programa y pues con los demas metodos no hay problema funcionan bien, de antemano gracias.

Código
  1. public class algoritmo
  2.    {    
  3.    public static int i,numero,tam,opc,opc1,tmp,izq,der;
  4.    public static int a[];
  5.    public void inicio(int tama&#241;o)
  6.    {
  7.    tam=tama&#241;o;
  8.    a=new int[tam];
  9.    }  
  10.    public void lee(int i, int num)
  11.    {
  12.    a[i]=num;
  13.    }
  14.  
  15.    public void escribe(int tam)
  16.    {
  17.    int i=0;
  18.    for(i=0; i<tam;i++)
  19.    {
  20.    System.out.printf("["+a[i]+"]"+"");        
  21.    }    
  22.    }
  23.  
  24.    public void cambio(int a[],int pos1,int pos2)
  25.    {
  26.    t1=a[pos1];
  27.    a[pos1]=a[pos2];
  28.    a[pos2]=t1;
  29.    }
  30. public void quicksort(int a[],int b,int c)
  31.    {
  32.        double pivote;
  33.        izq=b;
  34.        der=c;
  35.        pivote=a[(izq+der)/2];
  36.        i=b;
  37.        j=c;
  38.        do
  39.        {
  40.            while(a[i]<pivote)i++;
  41.  
  42.            while(a[j]>pivote) j--;
  43.            if(i<=j)
  44.            {
  45.                int tmp;
  46.             tmp=a[i];
  47.             a[i]=a[j];
  48.             a[j]=tmp;
  49.             i++;
  50.             j--;
  51.            }
  52.        }while (i<=j);
  53.  
  54.            if(b<j) quicksort(a,b,j);
  55.            if(i<c) quicksort(a,i,c);
  56.        }
  57.  
  58.    public static void main(String args[]) throws Exception
  59.    {
  60.    BufferedReader tcld = new BufferedReader(isr);
  61.    String cad;
  62.    algoritmo  objeto=new algoritmo ();
  63.    do
  64.    {
  65.    System.out.println("\n");      
  66.    System.out.println("M&#233;todos de Ordenaci&#243;n\n");
  67.    System.out.println("         Men&#250;          \n");
  68.    System.out.println("0._Digite Valores");
  69.    System.out.println("1._Quick Sort");
  70.   System.out.println("3._Salir");
  71.    cad=tcld.readLine();
  72.    opc=Integer.parseInt(cad);    
  73.    switch(opc)
  74.    {
  75.     case 0:
  76.     {    
  77.     System.out.print("Cuantos valores vas a Ingresar: ");
  78.            cad=tcld.readLine();
  79.            tam=Integer.parseInt(cad);            
  80.            objeto.inicio(tam);
  81.            for (i=0;i<tam;i++)
  82.            {
  83.            System.out.print("Posici&#243;n: "+i + "-->");
  84.            cad=tcld.readLine();
  85.            numero=Integer.parseInt(cad);    
  86.            objeto.lee(i, numero);
  87.            }
  88.            objeto.escribe(tam);                
  89.     break;
  90.     }
  91.  
  92.     case 1:
  93.     {
  94.  
  95.     }
  96.      case 2:
  97.     {
  98.     System.out.print("\nM&#233;todo Quick Sort\n");
  99.     objeto.quicksort([b][u]a,0,tam-1[/u][/b]);// este era mi gran error
  100.        objeto.escribe(tam);        
  101.         break;
  102.     }
  103.       default: System.out.println("Salir");
  104.            break;
  105.    }
  106.    }          
  107.  
  108.          while(opc!=2);
  109.    }    
  110. }
  111.