Bueno... creo q de porsi está un poco complicada la forma en q la implementaste, podrías haberhecho mejor q en cada posicion del vector apariciones fuera una forma de representar los valores del arreglo, de tal forma q al pasar por los bucles llegue a obtener:
apariciones [0, 4, 0, 3, 1]
posiciones
- 0, 1, 2, 3, 4
A mi se me ocurrio esto:
Usamos el mismo arreglo q nos mensionas, con otros 2 enteros, un Valor Maximo q nos servirá de condicional para detener el bucle for al contar y un Valor cantidad.
El el 1º bucle (for) nos dira quien es el máximo.
Luego tendremos otros 2 bucles for metidos, los cuales, recorrerán todo el arreglo 4 veces (puesto q 4 es el valor maximo).
El 1º recorrido se contarán toods los 1 y al salir del "for" lo imprime.
Luego el contador vuelve a 0 y se vuelve a contar todos los 2, sale del "for" y se imprime, y así sucesivamente.
Código Java:
Ver originalint [] arreglo = {1, 1, 1, 3, 3, 4, 3, 1};
int MaxValue = 0;
for(int i = 0; i<arreglo.length; i++) if(MaxValue<arreglo[i]) MaxValue = arreglo[i];
for(int a = 1; a <= MaxValue; a++){
int cantidad = 0;
for(int i = 0; i<arreglo.length; i++) if(a == arreglo[i]) cantidad++;
System.
out.
println("El número "+a
+" se repite "+cantidad
+" veces"); }