Basis van programmeren (pseudocode traceren)
÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Het volgende programma zoekt in de oplopend gesorteerde integer-array data (indexen beginnen bij 1) de index van de eerste waarde die minstens x is, en zet die in lo. x is niet groter dan het laatste element van data. Wat moet er op de plaats van 【a】 in het programma staan?
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
Antwoord en toelichting tonen
Antwoord: C. mid + 1
Als data[mid] < x, dan zijn data[mid] en alle elementen ervoor kleiner dan x, dus het antwoord ligt op mid + 1 of later. Anders geldt data[mid] ≧ x en ligt het antwoord op mid of eerder, dus hi ← mid. Met lo ← mid + 1 wordt het bereik altijd kleiner, en het antwoord ligt waar lo = hi. Met lo ← mid geldt mid = lo zodra lo en hi naast elkaar liggen, en als dan data[mid] < x, wordt het bereik niet kleiner en eindigt de lus nooit.
Verder: nog 9 vragen over Basis van programmeren (pseudocode traceren)