Array im Pseudocode?
Leider habe ich Probleme zu verstehen was dieser Algorithmus genau macht, bzw was im roten Kasten als Lösung kommt.
Soweit ich verstehe beginne ich beim ersten Element von b und gehen dann bis zum 2 (3-1=2). Diese Elemente vergleiche ich mit den Elementen in a. In diesem Fall kommen beide (0 und 3) mehrfach in a vor. Da liegt auch mein Verständnis Problem. Der Algorithmus setzt dann den Wert von c am Index i (also 0 und 1) auf c.get(i)+1. Damit kann ich leider nichts anfangen.
c.get(i) liest das Element an dieser Index Position aus. Aber was ist das für diesen Fall?
Vielen Dank schonmal für eure Hilfe!
1 Antwort
Ein Array beginnt mit Stelle 0. Das erste Element im Array ist an der Stelle 0.
Deswegen macht man auch „bis length - 1“, denn die Länge ist in dem Fall 3 Elemente, es gibt aber nur die Stellen 0-2.
Somit läuft die äußere Schleife über die Stellen 0, 1 und 2, und somit über jede Zahl im Array b. (b[0] = 0 | b[1] = 3 | b[2] = 9)
Der Algorithmus zählt, wie oft jede Zahl aus b im Array a vorkommt.
Du beginnst mit der 0-ten Stelle von b. Das ist eine 0.
Dann gehst du a Element für Element durch, und wenn dasjenige Element gleich 0 (also der Zahl aus b) ist, dann erhöhst du c an der 0-ten Stelle um 1. Somit zählst du, wie oft das 0-te Element in a vorkam.
Dasselbe dann noch mit 1ter und 2ter Stelle.
c.get(i)+1
c.get(i) liest das Element aus, das in c an der Stelle i steht. Anschließend wird 1 zu der ausgelesenen Zahl addiert. Das Ergebnis wird dann wieder abgespeichert in c an der selben Stelle.
Kurzgesagt: Der Wert an der Stelle i im Array c wird um 1 erhöht, falls die if-Bedingung davor zutrifft. c ist standardmäßig mit Nullen befüllt.
Habe ich das dann richtig verstanden, dass c={4,2,2} ist, da die null viermal, drei zweimal und neun zweimal in a vorkommt?