Implementeer binair zoeken om een getal terug te vinden in een gesorteerde lijst, zoals in de vorige leesactiviteit.
Je krijgt een beginbestand waarin het meeste al voor je geschreven is:
lijst met gehele getallen;IndexInLijst op, en drukt het resultaat af.Jij hoeft enkel de functie IndexInLijst in te vullen:
int IndexInLijst(int[] getallen, int getal)
{
// TODO: implementeer hier binair zoeken
return -1;
}
De functie krijgt de gesorteerde lijst getallen en het gezochte getal. Ze
geeft de nul-gebaseerde index terug van getal in getallen (het eerste
element heeft index 0), of -1 als het getal niet in de lijst zit. Zoek met
binair zoeken (verdeel en heers), dus niet met een gewone lus die elk element
één voor één overloopt.
Gebruik de aanpak uit de leesactiviteit: hou twee grenzen
linksenrechtsbij, bereken telkens hetmiddenmet een gehele deling, en gooi de helft weg waarin het getal niet kan zitten. Vergeet de+ 1bijlinks = midden + 1niet, anders riskeer je een oneindige lus.
Eén regel met het gezochte getal.
Eén regel: staat het getal in de lijst, dan <getal> staat op index <index>
(met <index> de nul-gebaseerde positie); zit het er niet in, dan
<getal> zit niet in de lijst.
Het getal 516 staat in de lijst, op positie 100:
Invoer:
516
Uitvoer:
516 staat op index 100
Het getal 500 zit niet in de lijst:
Invoer:
500
Uitvoer:
500 zit niet in de lijst