Saltar para o conteúdo

Counting sort: diferenças entre revisões

1 209 bytes adicionados ,  16h37min de 21 de abril de 2017
sem resumo de edição
for (int i = leftIndex; i < rightIndex; i++){
array[i] = vetorAuxiliar[i];
}
}
=== Código em Java 1.9 vetor de inteiros ===
public static void countingSort(int[] A, int maior) {
int[] aux = new int[maior + 1];
int[] resp = new int[A.length];
// preenche aux com zeros (java já faz isso automaticamente)
for (int i = 0; i < A.length; i++) {
aux[A[i]]++;
}
 
for (int i = 1; i < aux.length; i++) {
aux[i] += aux[i - 1];
}
 
for (int i = A.length - 1; i >= 0; i--) {
resp[aux[A[i]] - 1] = A[i];
aux[A[i]]--;
}
for (int i = 0; i < A.length; i++) {
A[i] = resp[i];
}
}
 
=== Código em Java 1.9 vetor de objetos ===
public static void countingSort(Componente[] A, int maior) {
/*Componente possui campo key(inteiro) e campo msg(string)*/
int[] aux = new int[maior + 1];
// preenche aux com zeros (java já faz isso automaticamente)
Componente[] resp = new Componente[A.length];
for (int i = 0; i < A.length; i++) {
aux[A[i].getKey()]++;
}
 
for (int i = 1; i < aux.length; i++) {
aux[i] += aux[i - 1];
}
 
for (int i = A.length - 1; i >= 0; i--) {
//resp[aux[A[i]] - 1] = A[i];
resp[aux[A[i].getKey()]-1]= A[i];
//aux[A[i]]--;
aux[A[i].getKey()]--;
}
for (int i = 0; i < A.length; i++) {
A[i] = resp[i];
}
}