public class Frequency {
public static void main(String[] args) {
/*
Die Idee ist dabei folgende, zuerst wird der zu untersuchende
Array (hier arr) deklariert und initialisiert.
*/
int [] arr = new int [] {5, 19, 2, 9, 16, 23, 2, 9, 16};
/*
Anschließend wird ein Array (hier freq) gleicher Größe wie arr
deklariert und initialisiert. Der Array freq wird verwendet,
um die Häufigkeiten der Elemente zu speichern.
*/
int [] freq = new int [arr.length];
/*
Um das erneute Zählen desselben Elements zu verhindern, wird die
Variable visited deklariert und ihr wird der Wert -1 zugewiesen.
*/
int visited = -1;
/*
Die Häufigkeit eines Elements wird mit zwei Schleifen gezählt.
Die erste Schleife dient dazu, ein Element aus dem Array
auszuwählen, und die zweite Schleife vergleicht das ausgewählte
Element mit dem Rest des Arrays.
*/
for(int i = 0; i < arr.length; i++){
/*
Die Variable count wird mit dem Wert 1 initialisiert zählt die
einzelnen Elemente. Wenn in der zweiten Schleife ein doppeltes
Element gefunden wird, wird der Wert von count um eins erhöht.
*/
int count = 1;
for(int j = i+1; j < arr.length; j++){
if(arr[i] == arr[j]){
count++;
/*
Bereits gezählte Elemente werden mithilfe der Variable
visited, als besucht markiert.
*/
freq[j] = visited;
}
}
if(freq[i] != visited)
/*
Die Anzahl der einzelnen Elemente wird in dem
Array freq gespeichert.
*/
freq[i] = count;
}
/*
Am Ende erfolgt die Ausgabe der Elemente zusammen mit ihrer
Häufigkeit.
*/
System.out.println("---------------------");
System.out.println(" Element | Haeufigkeit");
System.out.println("---------------------");
for(int i = 0; i < freq.length; i++){
if(freq[i] != visited)
System.out.println(" " + arr[i] + " | " + freq[i]);
}
System.out.println("---------------------");
}
}