Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:daten:processing:dictionaries_tutorial [2024-01-22 14:05] – hof | gf_informatik:daten:processing:dictionaries_tutorial [2026-05-25 10:14] (aktuell) – [Aufgabe 3 - HashMap] hof | ||
|---|---|---|---|
| Zeile 64: | Zeile 64: | ||
| print(map[' | print(map[' | ||
| </ | </ | ||
| - | |||
| #### Laufzeit-Messung | #### Laufzeit-Messung | ||
| Zeile 158: | Zeile 157: | ||
| Können wir noch schneller sein als Binärsuche? | Können wir noch schneller sein als Binärsuche? | ||
| - | Binärsuche ist sehr viel schneller als lineare Suche: jedes Mal, wenn wir die Anzahl Einträge verdoppeln, vergrössert sich die Zeit um einen konstanten Faktor. Alternative Betrachtung: | + | Binärsuche ist sehr viel schneller als lineare Suche: jedes Mal, wenn wir die Anzahl Einträge verdoppeln, vergrössert sich die Zeit um einen konstanten Faktor. Alternative Betrachtung: |
| #### Hashing | #### Hashing | ||
| Zeile 178: | Zeile 176: | ||
| Um die Anzahl Kollisionen tief zu halten ist es wichtig, dass die Liste nie ganz gefüllt ist - die Tupel-Liste wird also bewusst grösser gewählt als nötig und bei Bedarf ein _rehash_ ausgeführt: | Um die Anzahl Kollisionen tief zu halten ist es wichtig, dass die Liste nie ganz gefüllt ist - die Tupel-Liste wird also bewusst grösser gewählt als nötig und bei Bedarf ein _rehash_ ausgeführt: | ||
| - | |||
| - | |||
| #### Aufgabe 3 - HashMap | #### Aufgabe 3 - HashMap | ||
| Implementiere eine `class HashMap`. | Implementiere eine `class HashMap`. | ||
| Zeile 187: | Zeile 183: | ||
| <nodisp 1> | <nodisp 1> | ||
| - | ++++Mit | + | ++++Mit |
| <code python> | <code python> | ||
| class HashMap(TupleList): | class HashMap(TupleList): | ||
| Zeile 308: | Zeile 304: | ||
| def __delitem__(self, | def __delitem__(self, | ||
| - | | + | |
| + | self._len -= 1 | ||
| + | return item | ||
| def __setitem__(self, | def __setitem__(self, | ||
| Zeile 330: | Zeile 328: | ||
| if entry: | if entry: | ||
| for key in entry: | for key in entry: | ||
| - | self._finditem(key, | + | self._finditem(key, |
| </ | </ | ||
| ++++ | ++++ | ||
| </ | </ | ||