Counting sort: diferenças entre revisões

318 bytes adicionados ,  00h55min de 18 de abril de 2019
m (sp)
Etiqueta: Possível resumo indevido
=== Código em Java 1.0 ===
<syntaxhighlight lang="java" line="1">
public voidInteger[] CountingSort(Integer[] v) {
//encontra o maior valor em v[]
int maior = v[0];
for (int i = 1; i < v.length; i++) {
if (v[i] > maior) {
maior = v[i];
}
}
}
//conta quantas vezes cada valor de v[] aparece
// frequencia
int[] c = new int[maior+1];//+1 pois se 10 for o maior valor, ele iria apenas de 0 a 9
for (int i = 0; i < v.length; i++) {
c[v[i] -1] += 1;
}
//acumula as vezes de cada elemento de v[] com os elementos anteriores a este
// cumulativa
for (int i = 1; i < maiorc.length; i++) {
c[i] += c[i-1];
}
//adiciona os elementos em suas posições conforme o acumulo de suas frequencias
Integer[] b = new Integer[v.length];
for (int i = b.length-1; i >= 0; i--) {//percorre do fim para o inicio para manter estavel, mas não haveria problema em i = 0; i < b.lenght; i++
for (int i = 0; i < b.length; i++) {
b[c[v[i] -1] -1] = v[i];
c[v[i] -1]--;
}
for (int i = 0; i < b.length; i++) {
v[i] = b[i];
}
}
return b;
}
</syntaxhighlight>
 
Utilizador anónimo