Datenstrukturen und Algorithmen
Eine binäre Suche sucht 38 im aufsteigend sortierten Array a[0] bis a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60. Der Suchbereich beginnt mit lo = 0 und hi = 9, und die mittlere Position ist (lo + hi) ÷ 2 abgerundet. Welche Folge gibt die Elemente, die mit 38 verglichen werden, in der richtigen Reihenfolge an?
- A23, 38
- B31, 52, 45, 38
- C23, 45, 31, 38
Antwort und Erläuterung anzeigen
Antwort: C. 23, 45, 31, 38
Zuerst ergibt (0 + 9) ÷ 2 = 4, also wird 38 mit a[4] = 23 verglichen; 38 ist größer, daher lo = 5. Dann ergibt (5 + 9) ÷ 2 = 7, der Vergleich erfolgt mit a[7] = 45; 38 ist kleiner, daher hi = 6. Danach liefert (5 + 6) ÷ 2 = 5 das Element a[5] = 31, also lo = 6, und schließlich stimmt a[6] = 38 überein. Das sind 4 Vergleiche, das Maximum für 10 Elemente, ⌊log₂ 10⌋ + 1 = 4. Die Folge 31, 52, 45, 38 entsteht, wenn die Mitte aufgerundet wird, was nicht der Regel in der Frage entspricht.