Lösungen - TuH2L
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Scheme</language>
Link zur Hauptseite: [[Teile_und_Herrsche_2]]
Link zu den Übungsaufgaben: [[Aufgaben_-_TuH2]]
==Lösungen zur Binären Suche==
===Aufgabe 1===
==Aufgabe1 (c)==
Mögliche Implementierung:
<code>
(define binhelfer2
(lambda (x ls start ende)
(let ((mitte (floor (+ start (/ (- ende start) 2)))))
(cond
((>= mitte (vector-length ls))"Falsche Eingabe")
((> start ende) (string-append "Element wurde nicht gefunden. Anzahl Rekursionen : " (number->string calls)))
((= (vector-ref ls mitte) x)(string-append "Element gefunden an der Stelle :" (number->string mitte) ". Anzahl Rekursionen : " (number->string calls)))
((< (vector-ref ls mitte) x)(and (set! calls (+ calls 1))(binhelfer2 x ls (+ mitte 1) ende)))
((> (vector-ref ls mitte) x)(and (set! calls (+ calls 1))(binhelfer2 x ls start (- mitte 1))))))))
(define calls 0)
(define binaersuche3
(lambda (x ls)
(set! calls 0)
(binhelfer2 x (list->vector ls) 0 (length ls))))
(define liste '(4 8 15 16 23 42))
</code>
<eval>(binaersuche3 23 liste)</eval>
<!--
===Aufgabe 2===
Wir erinnern uns die Schulbuchmethode sieht wie folgt aus:
<math>
\begin{array}{cccccccccc}
4&3&7&8&\cdot&6&7&8&9 \\
\hline
&2&6&2&6&8&&& \\
&&&&&&&& \\
&&&&&&&& \\
&&&&&&&& \\
\hline
&&&&&&&&
\end{array}
</math>
-->