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
public static void main
(String args
[]){ new Arreglo(); //Constructor
}
public Arreglo(){
Quicksort(A,p,q);
}
Espero haberme explicado.
Un saludo.
PD. perdon por las faltas ortográficas, tengo flojera de escribir xD