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
gf_informatik:suchen_und_sortieren:binaersuche [2026-04-04 20:02] hofgf_informatik:suchen_und_sortieren:binaersuche [2026-04-07 11:50] (aktuell) – [Aufgabe B3: Binäre Suche in Python] hof
Zeile 32: Zeile 32:
  
 Bei der Suche im Wörterbuch suchen wir zu Beginn nur die richtige Seite - wir teilen den Suchbereich, indem wir die Mitte der verbleibenden Seiten wählen und den ersten Eintrag der Seite anschauen. Sind wir auf der richtigen Seite, wiederholen wir dasselbe mit den einzelnen Einträgen. Bei der Suche im Wörterbuch suchen wir zu Beginn nur die richtige Seite - wir teilen den Suchbereich, indem wir die Mitte der verbleibenden Seiten wählen und den ersten Eintrag der Seite anschauen. Sind wir auf der richtigen Seite, wiederholen wir dasselbe mit den einzelnen Einträgen.
 +
 #### Aufgabe B2: Binäre Suche berechnen #### Aufgabe B2: Binäre Suche berechnen
  
Zeile 103: Zeile 104:
 <nodisp 1> <nodisp 1>
 ++++Lösung| ++++Lösung|
-<code python binaere_suche_loesung.py>+<html><bottom-editor>
 def binary_search(l, v): def binary_search(l, v):
-    """Gibt den Index des gesuchten Elements in l zurück, None, 
-       wenn das Element nicht existiert.""" 
     links = 0     links = 0
     rechts = len(l) - 1     rechts = len(l) - 1
 +    
     while links <= rechts:     while links <= rechts:
         mitte = (links + rechts) // 2         mitte = (links + rechts) // 2
-        if l[mitte] == v: +        element = l[mitte] 
-            return mitte +        print(f'Besuche {mitte} ({element}) im Intervall {links}-{rechts}'
-        elif l[mitte] > v:+        if element == v: 
 +            return mitte  # Gefunden! 
 +        if < element: 
 +            # Links weitersuchen
             rechts = mitte - 1             rechts = mitte - 1
         else:         else:
 +            # Rechts weitersuchen
             links = mitte + 1             links = mitte + 1
-    return None +             
-</code>+    return None  # Nichts gefunden 
 + 
 +print(binary_search(['A','C','D','G','J','N','Q','X'],'J')) # output must be: 4 
 +</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
Zeile 167: Zeile 174:
 ++++ ++++
 </nodisp> </nodisp>
- 
  
 #### Aufgabe B5: Zeitmessung mit linearer und binärer Suche #### Aufgabe B5: Zeitmessung mit linearer und binärer Suche
Zeile 181: Zeile 187:
 <nodisp 1> <nodisp 1>
 ++++Lösung| ++++Lösung|
-<code python>+<html><bottom-editor timeout="180" zip="https://sca.ksr.ch/lib/exe/fetch.php?media=gf_informatik:programmieren_i:null79.py.zip">
 from null79 import names, numbers from null79 import names, numbers
 import time import time
Zeile 214: Zeile 220:
     telnr = numbers[index]     telnr = numbers[index]
     elapsed = time.time() - start     elapsed = time.time() - start
-    print('Die Nummer von {0} lautet {1}! Die Suche dauerte {2:.2f}s.'.format(name, telnr, elapsed))+    print(f'Die Nummer von {name} lautet {telnr}! Die Suche dauerte {elapsed:.2n}s.')
  
 stopwatch(linear_search, 'Annina') stopwatch(linear_search, 'Annina')
Zeile 220: Zeile 226:
 stopwatch(linear_search, 'Lyanna') stopwatch(linear_search, 'Lyanna')
 stopwatch(binary_search, 'Lyanna') stopwatch(binary_search, 'Lyanna')
-</code>+</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
Zeile 293: Zeile 299:
 <nodisp 1> <nodisp 1>
 ++++Lösung| ++++Lösung|
-<code python binaere_suche_rekursiv.py>+<html><bottom-editor timeout="180" zip="https://sca.ksr.ch/lib/exe/fetch.php?media=gf_informatik:programmieren_i:null79.py.zip">
 def binaere_suche_rekursiv(l, suche, links=None, rechts=None): def binaere_suche_rekursiv(l, suche, links=None, rechts=None):
     """Gibt den Index des gesuchten Elements in l zurück,     """Gibt den Index des gesuchten Elements in l zurück,
Zeile 319: Zeile 325:
         links = mitte + 1         links = mitte + 1
     return binaere_suche_rekursiv(l, suche, links, rechts)     return binaere_suche_rekursiv(l, suche, links, rechts)
-</code>+ 
 +from null79 import names, numbers 
 +print(f'Die Telefonummer von Lyanna ist {numbers[binaere_suche_rekursiv(names, "Lyanna")]}.'
 +</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
  • gf_informatik/suchen_und_sortieren/binaersuche.1775332967.txt.gz
  • Zuletzt geändert: 2026-04-04 20:02
  • von hof