faecher:informatik:oberstufe:adt:set:implementationen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:adt:set:implementationen:start [14.11.2021 18:25] – [Kollisionen] sbelfaecher:informatik:oberstufe:adt:set:implementationen:start [14.11.2021 18:42] (aktuell) – [Ist eine Zahl in der Menge enthalten?] sbel
Zeile 37: Zeile 37:
 </code> </code>
  
-{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_091.png |}}+{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_091.png500 |}}
  
 Der binäre UND-Operator verknüpft zwei ''int''-Zahlen (nach Umwandlung in die Binärdarstellung) und setzt im Ergebnis ein Bit auf 1, wenn die entsprechenden Bits in beiden Operanden auf 1 gesetzt sind. Der binäre UND-Operator verknüpft zwei ''int''-Zahlen (nach Umwandlung in die Binärdarstellung) und setzt im Ergebnis ein Bit auf 1, wenn die entsprechenden Bits in beiden Operanden auf 1 gesetzt sind.
Zeile 52: Zeile 52:
  bitvektor = bitvektor | 64; // neuer Wert 89  bitvektor = bitvektor | 64; // neuer Wert 89
 </code> </code>
-{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_092.png |}}+{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_092.png?500 |}}
  
 Der binäre ODER-Operator verknüpft zwei ''int''-Zahlen und setzt im Ergebnis ein Bit auf 1, wenn mindestens eines der entsprechenden Bits in den beiden Operanden auf 1 gesetzt ist. Der binäre ODER-Operator verknüpft zwei ''int''-Zahlen und setzt im Ergebnis ein Bit auf 1, wenn mindestens eines der entsprechenden Bits in den beiden Operanden auf 1 gesetzt ist.
Zeile 76: Zeile 76:
 </code>  </code> 
  
-{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_093.png |}}+{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_093.png?500 |}}
  
 ==== Zahlbereichserweiterung ==== ==== Zahlbereichserweiterung ====
Zeile 84: Zeile 84:
 Die k-te Zahl der ArrayList repräsentiert damit die Elemente mit den Werten 32·k bis 32·k+31. Die k-te Zahl der ArrayList repräsentiert damit die Elemente mit den Werten 32·k bis 32·k+31.
  
-{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_094.png |}}+{{ :faecher:informatik:oberstufe:adt:set:implementationen:auswahl_094.png?600 |}}
  
 Das Element ''n'' wird also durch das Bit ''n%32'' in der Zahl ''daten[n/32]'' repräsentiert. Das Element ''n'' wird also durch das Bit ''n%32'' in der Zahl ''daten[n/32]'' repräsentiert.
Zeile 157: Zeile 157:
 </WRAP> </WRAP>
  
-===== Kollisionen =====+==== Kollisionen ====
  
 "Aber was macht man, wenn zwei Zahlen den gleichen Hashwert erhalten?" "Aber was macht man, wenn zwei Zahlen den gleichen Hashwert erhalten?"
Zeile 196: Zeile 196:
  
 Wenn man im Vorfeld bereits weiß, wie viele Elemente vermutlich gespeichert werden sollen, kann man bereits beim Erzeugen das Array entsprechend anlegen. Wenn man im Vorfeld bereits weiß, wie viele Elemente vermutlich gespeichert werden sollen, kann man bereits beim Erzeugen das Array entsprechend anlegen.
 +
 +==== Bewertung ====
 +
 +
 +=== Vorteile: ===
 +
 +  * Im Durchschnitt sehr schnell
 +  * Auf beliebige Datentypen anwendbar (in Java: Methode ''hashCode()'' der ''Object''-Klasse)
 +
 +=== Nachteile: ===
 +
 +  * Hoher Speicherbedarf
 +  * Kann in seltenen (konstruierten) Fällen langsam arbeiten
  • faecher/informatik/oberstufe/adt/set/implementationen/start.1636914312.txt.gz
  • Zuletzt geändert: 14.11.2021 18:25
  • von sbel