Quicksort em java?

Bom dia, pessoal.

Eu estou começando em java e gostaria que alguém pudesse me ajudar nesse algoritmo quicksort, eu achei alguns pelo google e um aqui no site, mas não consigo fazer com que funcione, eu peguei os mais simples, no caso os que tem menos códigos, pois gostaria de entender melhor o conceito do quicksort.
Segue abaixo os dois exemplos modificados, mas estão com problemas:

[code]
public class quicksort {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
            // Inicio da parte que acrescentei...
	int vet[] = new int[9];
	
	vet[0] = 5;
	vet[1] = 8;
	vet[2] = 7;
	vet[3] = 2;
	vet[4] = 3;
	vet[5] = 9;
	vet[6] = 1;
	vet[7] = 6;
	vet[8] = 10;
	vet[9] = 4;
	
	quicksort(vet, vet[6], vet[8]);
            // Fim da parte que acrescentei...

}	

public void quicksort (int[] a, int lo, int hi){

// lo is the lower index, hi is the upper index
// of the region of array a that is to be sorted
int i=lo, j=hi, h;
int x=a[(lo+hi)/2];

	    //  partition
	    do
	    {    
	        while (a[i]<x) i++; 
	        while (a[j]>x) j--;
	        if (i<=j)
	        {
	            h=a[i]; a[i]=a[j]; a[j]=h;
	            i++; j--;
	        }
	    } while (i<=j);

	    //  recursion
	    if (lo<j) quicksort(a, lo, j);
	    if (i<hi) quicksort(a, i, hi);
	}

}[/code]

2º Exemplo(esse é o que tem aqui no site!):
link: http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=56

[code]
public class quicksort2 {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
            
            // inicio da parte que acrescentei!
	int array[] = new int[10];
	
	array[0] = 3;
	array[1] = 9;
	array[2] = 0;
	array[3] = 4;
	array[4] = 6;
	array[5] = 2;
	array[6] = 8;
	array[7] = 1;
	array[8] = 7;
	array[9] = 10;
	array[10] = 5;
	
	quicksort(0, array.length - 1, array); 
            // fim da parte que acrescentei!
}

public void quicksort(int p, int q, int array[]){
	 if (p < q){
	    int x = particao(p, q, array);
	    quicksort(p, x - 1, array);
	    quicksort(x + 1, q, array);
	 }
}
public int particao(int p, int q, int array[]){
	 int j = p - 1;
	 int aux = array[q];
	 for (int i = p; i <= q; i++){
   	     if (array[i] <= aux) troca(array, i, ++j);
	 }
	 return j;
}

}
[/code][/code]

Ahummm… não é melhor Arrays.sort(vert) ?

Também, mas como eu aplicaria? No caso essa função, gera números aleatórios, é isso?

Esses dois códigos que passei pelo que eu vi, estão corretos, só que falta fazer uma chamada a função e isso eu não sei como fazer, os exemplos que peguei foram dos links abaixo:
1º exemplo:
http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/quick/quicken.htm

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

Numeros Aleatórios !? Claro que não.

      int array[] = new int[10];
      
      array[0] = 3;
      array[1] = 9;
      array[2] = 0;
      array[3] = 4;
      array[4] = 6;
      array[5] = 2;
      array[6] = 8;
      array[7] = 1;
      array[8] = 7;
      array[9] = 10;
      array[10] = 5; 

      Arrays.sort(array);

      // aqui o array já está ordenado

hum… Agora que caiu a ficha.
Não posso utilizar o .sort para ordenar, tenho que fazer o algoritmo quicksort para ordenar e na verdade, tenho que trabalhar com matrizes e não com vetores como fiz no exemplo e ainda ordenar em ordem decrescente a matriz.