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];
}
}
}