Metodo quicksort en java

Iniciado por ship, 11 Noviembre 2011, 07:50 AM

0 Miembros y 1 Visitante están viendo este tema.

ship

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 (java) [Seleccionar]

public void quicksort(int a[],int inf,int sup)
    {
        int izq,der;
        double pivote;
        izq=inf;
        der=sup;
        pivote=a[(izq+der)/2];
        while(izq<der)
        {
            while(a[izq]<pivote && der<sup)
                izq++;
            while(pivote<a[der] && der>inf)
                der--;

            if(inf<der) quicksort(a,inf,der);
            if(izq<sup) quicksort(a,izq,sup);
        }
    }
    public static void main(String args[]) throws Exception
    {
    InputStreamReader isr=new InputStreamReader(System.in);
    BufferedReader tcld = new BufferedReader(isr);
    String cad;
    busquedas  obj=new busquedas ();
    do
    {
    System.out.println("\n");     
    System.out.println("Métodos de Ordenación\n");
    System.out.println("----Menú---\n");
    System.out.println("0._Ingresar Valores");
  System.out.println("1._Burbuja");
  System.out.println("2._Quick Short");
  System.out.println("3._Shell");
  System.out.println("4._Salir");
    cad=tcld.readLine();
    opc=Integer.parseInt(cad);   
    switch(opc)
    {
    case 0:
}
case 2:
    {
    System.out.print("\nMétodo Quick Short");
    obj.quicksort(a,1,tam-1); //Aqui esta el error
    cad=tcld.readLine();
            opc1=Integer.parseInt(cad);               
          break;
    }

BlackZeroX

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!¡.
The Dark Shadow is my passion.

RyogiShiki

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:


ship

#3
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 (java) [Seleccionar]
public class algoritmo
    {     
    public static int i,numero,tam,opc,opc1,tmp,izq,der;
    public static int a[];
    public void inicio(int tamaño)
    {
    tam=tamaño;
    a=new int[tam];
    } 
    public void lee(int i, int num)
    {
    a[i]=num;
    }
   
    public void escribe(int tam)
    {
    int i=0;
    for(i=0; i<tam;i++)
    {
    System.out.printf("["+a[i]+"]"+"");       
    }   
    }
   
    public void cambio(int a[],int pos1,int pos2)
    {
    t1=a[pos1];
    a[pos1]=a[pos2];
    a[pos2]=t1;
    }
public void quicksort(int a[],int b,int c)
    {
        double pivote;
        izq=b;
        der=c;
        pivote=a[(izq+der)/2];
        i=b;
        j=c;
        do
        {
            while(a[i]<pivote)i++;
               
            while(a[j]>pivote) j--;
            if(i<=j)
            {
                int tmp;
            tmp=a[i];
            a[i]=a[j];
            a[j]=tmp;
            i++;
            j--;
            }
        }while (i<=j);

            if(b<j) quicksort(a,b,j);
            if(i<c) quicksort(a,i,c);
        }
   
    public static void main(String args[]) throws Exception
    {
    InputStreamReader isr=new InputStreamReader(System.in);
    BufferedReader tcld = new BufferedReader(isr);
    String cad;
    algoritmo  objeto=new algoritmo ();
    do
    {
    System.out.println("\n");     
    System.out.println("Métodos de Ordenación\n");
    System.out.println("         Menú          \n");
    System.out.println("0._Digite Valores");
    System.out.println("1._Quick Sort");
   System.out.println("3._Salir");
    cad=tcld.readLine();
    opc=Integer.parseInt(cad);   
    switch(opc)
    {
    case 0:
    {   
    System.out.print("Cuantos valores vas a Ingresar: ");
            cad=tcld.readLine();
            tam=Integer.parseInt(cad);           
            objeto.inicio(tam);
            for (i=0;i<tam;i++)
            {
            System.out.print("Posición: "+i + "-->");
            cad=tcld.readLine();
            numero=Integer.parseInt(cad);   
            objeto.lee(i, numero);
            }
            objeto.escribe(tam);                 
    break;
    }
   
    case 1:
    {
   
    }
      case 2:
    {
    System.out.print("\nMétodo Quick Sort\n");
    objeto.quicksort([b][u]a,0,tam-1[/u][/b]);// este era mi gran error
        objeto.escribe(tam);            
          break;
    }
       default: System.out.println("Salir");
            break;
    }
    }           
   
          while(opc!=2);
    }   
}