Grundlagen der Programmierung (Pseudocode nachverfolgen)
÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Das folgende Programm ermittelt in lo den Index des ersten Werts, der mindestens x ist, im aufsteigend sortierten ganzzahligen Array data (die Indizes beginnen bei 1). x ist nicht größer als das letzte Element von data. Was gehört an die Stelle von 【a】 im Programm?
integer: lo ← 1, hi ← length(data), mid
while (lo < hi)
mid ← (lo + hi) ÷ 2
if (data[mid] < x)
lo ← 【a】
else
hi ← mid
endif
endwhile
- Amid
- Bmid − 1
- Cmid + 1
Antwort und Erläuterung anzeigen
Antwort: C. mid + 1
Gilt data[mid] < x, sind data[mid] und alle Elemente davor kleiner als x; die Antwort liegt also bei mid + 1 oder dahinter. Andernfalls gilt data[mid] ≧ x, und die Antwort liegt bei mid oder davor, daher hi ← mid. Mit lo ← mid + 1 wird der Bereich in jedem Durchlauf kleiner, und die Antwort liegt dort, wo lo = hi gilt. Mit lo ← mid ist bei benachbartem lo und hi mid = lo; gilt dann data[mid] < x, wird der Bereich nicht kleiner, und die Schleife endet nie.
Weiter: 9 weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)