Foro de elhacker.net

Programación => Java => Mensaje iniciado por: mapers en 20 Septiembre 2010, 06:31 am



Título: Quicksort
Publicado por: mapers en 20 Septiembre 2010, 06:31 am
me sale un error pero no lo encuentro donde me lo podrian revisar porfavor


Código
  1. public class Arreglo
  2. {
  3.  
  4.  
  5.   public  void Quicksort(int A[], int b, int t)
  6.  
  7. {
  8.     int pivote;
  9.     if(b < t){
  10.        pivote=colocar(A, b, t);
  11.        Quicksort(A, b, pivote-1);
  12.        Quicksort(A, pivote+1, t);
  13.     }
  14. }
  15.  
  16.  
  17.  public int colocar(int A[], int b, int t)
  18. {
  19.    int i;
  20.    int pivote, valor_pivote;
  21.    int temp;
  22.  
  23.    pivote = b;
  24.    valor_pivote = A[pivote];
  25.    for (i=b+1; i<=t; i++){
  26.        if (A[i] > valor_pivote){
  27.                 pivote++;
  28.                temp=A[i];
  29.                A[i]=A[pivote];
  30.                A[pivote]=temp;
  31.  
  32.        }
  33.    }
  34.    temp=A[b];
  35.    A[b]=A[pivote];
  36.    A[pivote]=temp;
  37.    return (int) pivote;
  38. }
  39.  
  40.  
  41.  
  42.  
  43.  
  44.   public static void main(String[] args)
  45.    {
  46.       int j=0,n=0,p=0,q=121;
  47.       int A[]=new int[121];
  48.       p=0;//primer valor inicial//
  49.  
  50.     for(int i=0;i<120;i++)
  51.        {
  52.            int valor = 1 + ( int ) ( Math.random() * 469 );
  53.  
  54.            A[i]=valor;
  55.  
  56.        }
  57.  
  58.  
  59.  
  60.   Quicksort(A,p,q);
  61.  
  62.              for(j=0;j<120;j++)
  63.                     {
  64.                 System.out.print ("<"+A[j]+">");
  65.                    }
  66.   }
  67.  
  68.  
  69. }
  70.  
  71.  
  72.  


Título: Re: Quicksort
Publicado por: 1mpuls0 en 20 Septiembre 2010, 06:54 am
En qué línea o parte del código te marca el error?? :S

me parece que tus metodos Quicksort y colocar deben ser static, no sé si ese sea el error, tal vez si indicas la parte donde te marca el error podriamos ayudarte.

Un saludo.


Título: Re: Quicksort
Publicado por: mapers en 20 Septiembre 2010, 06:57 am
justo hay  en  
Código:
Quicksort(A,p,q);

si men teniaz razon ese era el error pero pork  .....me podrias explicar mmmm


Título: Re: Quicksort
Publicado por: 1mpuls0 en 20 Septiembre 2010, 07:01 am
No soy muy bueno explicando pero a ver que tal.

Las clases tienen variables, cada vez que instancias la clase, esas variables se crean para cada instancia,
lo mismo con los métodos si tienes una clase con la variable entera x, cada instancia de esa clase tendrá dentro una variable entera x, cierto? Lo mismo con los métodos.

Ahora, lo que hace el modificador static es que ya sea una variable o un método este se cree SOLO UNA VEZ para TODAS las instancias de esa clase, es decir que si la variable x cambia de valor... Todas las instancias podrán ver este cambio, porque esta variable es única para todas las instancias y le pertenece a todas.

Lo mismo con los métodos, si un método es estático. Este es único para la clase, no importa cuántas instancias de la clase haya, todas las instancias compartirán el mismo método, porque es static.
Entonces... Las variables normales.. Son variables de instancia... y las variables static se llaman variables de CLASE.

Ahora... Si desde un método static intentas invocar a un método "normal", no se puede, porque si tienes 40 instancias... a cual método de todas las instancias estas llamando? es como una cosa de uno a muchos...
Los métodos y variables static pueden ser invocados sin necesidad de instanciar la clase

Si no quieres que tu método Quicksort NO sea static, desde el main llama al constructor y desde el contructor llama al método Quickstatic, por ejemplo

Código
  1. public static void main(String args[]){
  2. new Arreglo(); //Constructor
  3. }
  4.  
  5. public Arreglo(){
  6. Quicksort(A,p,q);
  7. }
  8.  

Espero haberme explicado.

Un saludo.

PD. perdon por las faltas ortográficas, tengo flojera de escribir xD



Título: Re: Quicksort
Publicado por: mapers en 20 Septiembre 2010, 07:16 am
no ya no men p´s  si me corre bien gracias pero te mencionaba que porque   me tiraba error hay mmm