Countin sort

E ai gente, socorro to escrevendo um algoritmo de ordenação usando o metodo do Count Sort, mas as vezes ele ordena e as vezes não… poderiam me ajudar?
import java.io.IOException;

public class CountingSorteS {

private int[] array;
private int[] tempMergArr;
private int length;

public static void main(String [] args){

    CountingSorteS cut = new CountingSorteS();
	int quantidade = 20;
    int [] inputArr = new int [quantidade];
   
    for (int i = 0; i < inputArr.length; i++) {
 	inputArr[i] = (int) (Math.random()* quantidade);
	}

    long tempoInicial = System.currentTimeMillis();
	cut.ordena(inputArr, quantidade);
	long tempoFinal = System.currentTimeMillis();

  System.out.println("Executado em = " + (tempoFinal - tempoInicial) + " ms");
      
    cut.ordena (inputArr, quantidade);
    for(int i:inputArr){
        System.out.print(i);
        System.out.print(", ");
    }

}

public static void ordena(int[] a, int m){
    int n = a.length;
    int vetorAuxiliar[] = new int[m]; 

  	for(int i = 0; i < m; i++){ 
        vetorAuxiliar[i] = 0; 
    } 
    
  	for(int i = 0; i < n; i++){ 
        vetorAuxiliar[a[i]]++; 
    } 
    int sum = 0; 
    
  	for(int i = 1; i < m; i++){ 
        int dum = vetorAuxiliar[i]; 
        vetorAuxiliar[i] = sum; 
        sum += dum; 
    } 
    int vetorOrdenado[] = new int[n]; 
    
  	for(int i = 0; i < n; i++){ 
        vetorOrdenado[vetorAuxiliar[a[i]]] = a[i]; 
        vetorAuxiliar[a[i]]++; 
    } 
    
  	for (int i = 0; i < n; i++){
      	a[i] = vetorOrdenado[i];
	}
}

}