Quick sort

Estou tentando usar o método Quick sort mais não estou conseguindo alguém pode me da uma dica de como eu faço para passar parâmentros pro método,
que o método recebe e o seguinte

	  private static void ordena(int a[], int p, int u) 

o primeiro e o vetor e esse p e u o que é isso???
vo deixar o código aqui embaixo quem souber por favor implemente ou me da uma dica de como passar esses parâmetros

import javax.swing.JOptionPane;


public class Quick 
{
	   
	/*----------------------------------------------------------------------*/
	/* Ordena uma rray pelo método QuickSort (recursivo).                    */
	/* Escolhe o pivô da partição aleatoriamente para minimizar proba-      */
	/* bilidade de tamanhos muito diferentes das duas metades do ARRAY.     */
	/* Rearranja o array de tal modo que:                                   */
	/* Elementos da primeira metade sejam menores que o pivô                */
	/* Elementos da segunda  metade sejam maiores que o pivô                */
	/* Parâmetros: array, índices do início e fim do subarray.              */
	/*----------------------------------------------------------------------*/
	  private static void ordena(int a[], int p, int u) 
	  {
	    int i = p, f = u;                        // Extremos
	    int x = (int) (Math.random()*(u-p+1))+p; // Aleatório
	    int pivô = a[x];                         // para evitar quadrático
	    
	    while (i <= f) 
	    {                         // Enquanto não se cruzarem
	      
	      while (i < u && a[i] < pivô) i++;      // Organiza primeira metade
	      
	      while (f > p && a[f] > pivô) f--;      // Organiza segunda metade
	      
	      if (i <= f) {                          // Se ainda não acabou
	        x = a[f];                            // troca os elementos
	        a[f--] = a[i];                       // dos dois lados
	        a[i++] = x;                          // da lista
	      }
	    }
	    
	    if (p < f) ordena(a,p,f);                // a[p]..a[f] < pivô
	    if (i < u) ordena(a,i,u);                // a[i]..a[u] > pivô
	  }
	  
	  public static void main(String args[])
	  {
		  int vet[] = new int [10];
		  int i;
		  
		  for(i=0;i<vet.length;i++)
		  {
			  vet[i]=Integer.parseInt(JOptionPane.showInputDialog("Dígite o "+(i+1)+"° número"));
			  ordena(vet);
		  }
	  }
	/*----------------------------------------------------------------------*/
	/* Chamada do usuário (mesma para todos os algoritmos).                 */
	/*----------------------------------------------------------------------*/
	 


}

Olá edymrex,
dá uma olhada nas alterações, espero ter ajudado!

[code]public static void main(String args[])
{
int vet[] = new int [10];
int i;

    for(i=0;i<vet.length;i++) 
    { 
       vet[i]=Integer.parseInt(JOptionPane.showInputDialog("Dígite o "+(i+1)+"° número")); 
    } 
    
    ordena(vet , 0, vet.length - 1);
    
    String vetor=" ";
    for (i=0;i<vet.length;i++)
    {
    	vetor=vetor + vet[i]+" ";
    	
    }
    
JOptionPane.showMessageDialog(null, vetor,"Numeros ordenados ",JOptionPane.PLAIN_MESSAGE);
 }[/code]

Valeu cara ajudou bastante, mas não consigo entender como funciona esse algoritimo do Quick Sort a idéia que eu tenho que que ele escolhe um pivô que é sempre o array na posição 0 a partir daí ele vai comparando quando os elementos são <= ao pivô ele fica na esquerda quando são >=pivô eles ficam na direita e isso mesmo que ocorre cara…??
Daí enquanto as duas extremidades não se coincidirem ele vai fazendo um loop e ordenando o array e isso cara…?? eu mudei o código olha como ficou

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class Quick 
&#123;
	   
	/*----------------------------------------------------------------------*/
	/* Ordena uma array pelo método QuickSort &#40;recursivo&#41;.                    */
	/* Escolhe o pivô da partição aleatoriamente para minimizar proba-      */
	/* bilidade de tamanhos muito diferentes das duas metades do ARRAY.     */
	/* Rearranja o array de tal modo que&#58;                                   */
	/* Elementos da primeira metade sejam menores que o pivô                */
	/* Elementos da segunda  metade sejam maiores que o pivô                */
	/* Parâmetros&#58; array, índices do início e fim do subarray.              */
	/*----------------------------------------------------------------------*/
	  private static void ordena&#40;int a&#91;&#93;, int p, int u&#41; 
	  &#123;
	    int i = p, f = u;                        // Extremos
	    int x = &#40;int&#41; &#40;Math.random&#40;&#41;*&#40;u-p+1&#41;&#41;+p; // Aleatório
	    int pivô = a&#91;x&#93;;                         // para evitar quadrático
	    
	    while &#40;i &lt;= f&#41;  // Enquanto não se cruzarem
	    &#123;                        
	      
	      while &#40;i &lt; u &amp;&amp; a&#91;i&#93; &lt; pivô&#41; i++;      // Organiza primeira metade
	      
	      while &#40;f &gt; p &amp;&amp; a&#91;f&#93; &gt; pivô&#41; f--;      // Organiza segunda metade
	      
	      if &#40;i &lt;= f&#41; &#123;                          // Se ainda não acabou
	        x = a&#91;f&#93;;                            // troca os elementos
	        a&#91;f--&#93; = a&#91;i&#93;;                       // dos dois lados
	        a&#91;i++&#93; = x;                          // da lista
	      &#125;
	    &#125;
	    
	    if &#40;p &lt; f&#41; ordena&#40;a,p,f&#41;;                // a&#91;p&#93;..a&#91;f&#93; &lt; pivô
	    if &#40;i &lt; u&#41; ordena&#40;a,i,u&#41;;                // a&#91;i&#93;..a&#91;u&#93; &gt; pivô
	    
	    
	  &#125;
	  
	  public static void main&#40;String args&#91;&#93;&#41;
	  &#123;
		  String saida=&quot;&quot;;
		  JTextArea texto = new JTextArea&#40;10,10&#41;;
		  int vet&#91;&#93; = new int &#91;10&#93;;
		  int i;
		  
		  for&#40;i=0;i&lt;vet.length;i++&#41;
		  &#123;
			  vet&#91;i&#93;=Integer.parseInt&#40;JOptionPane.showInputDialog&#40;null,&quot;Dígite o &quot;+&#40;i+1&#41;+&quot;° número&quot;,&quot;ATENÇÂO&quot;,JOptionPane.WARNING_MESSAGE&#41;&#41;;
			  
		  &#125;
		  
		  ordena&#40;vet,0,vet.length-1&#41;;
		  
		  //********************
		  for &#40;i=0;i&lt;vet.length;i++&#41;
	         &#123;
			  	saida+=vet&#91;i&#93;+&quot;\n&quot;;
	           
	         &#125;
		  
		  texto.setText&#40;saida&#41;;
		  
		  JOptionPane.showMessageDialog&#40;null,texto,&quot;ORDENAÇÂO COM QUICK SORT&quot;,JOptionPane.WARNING_MESSAGE&#41;;
		  
	  &#125;
	/*----------------------------------------------------------------------*/
	/* Chamada do usuário &#40;mesma para todos os algoritmos&#41;.  
	 *  public static void ordena&#40;int a&#91;&#93;&#41; &#123;ordena&#40;a,0,a.length-1&#41;;&#125;               */
	/*----------------------------------------------------------------------*/

&#125;

Se alguém souber por favor me explique em uma linguagem simples e fácil de enteder

http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=56

p/JLeonardo
Já vi esse algoritimo e diferente do meu…!
queria se possivel saber tudo que o método faz…!
se possivel me ajudar nas questões a qual eu já citei…!

[quote=“edymrex”]p/JLeonardo
Já vi esse algoritimo e diferente do meu…!
queria se possivel saber tudo que o método faz…!
se possivel me ajudar nas questões a qual eu já citei…![/quote]

A ordenação por partição(quicksort) utiliza o processo de partir o vetor ao meio e varrer o vetor das posições extremas para o centro. Do lado esquerdo procura-se o valor menor do que valor central(mediana) e do lado direito o valor maior que a mediana trocando esses valores de posição. Repete-se o processo até que o marcador da esquerda seja maior que o da direita. Ao final deste processo o vetor deve estar dividido em duas partes, do lado esquerdo deverá ter todos os valores menores do que a mediana e do lado direito todos os maiores. Repete-se este processo para cada uma das metades e assim, sucessivamente, até a ordenação do vetor.

Tudo que sei sobre o assunto é isso, se não for suficiente aguarde novos colaboradores. Abraço.