1.11 Cheatsheet — lineair zoeken
Snelle referentie. Klap open wat je nodig hebt.
Het algoritme zelf
De canonieke implementatie (zoek)
def zoek(lijst, doel):
for i, waarde in enumerate(lijst):
if waarde == doel:
return i
return -1
Variant met range (zoek)
def zoek(lijst, doel):
for i in range(len(lijst)):
if lijst[i] == doel:
return i
return -1
De bouwstenen
Door een lijst lopen (for)
for waarde in lijst: # alleen waarden
...
for i, waarde in enumerate(lijst): # index + waarde
...
for i in range(len(lijst)): # alleen index
...
Vergelijken (==)
==→ vergelijking (if x == 5)!=→ ongelijk (if x != 5)<,>,<=,>=→ andere vergelijkingen
Functie en return (def, return)
def naam(parameter1, parameter2):
...
return iets # stopt de functie en geeft 'iets' terug
return stopt de functie direct — code erna wordt niet meer
uitgevoerd.
Toevoegen aan een lijst (append)
resultaat = []
resultaat.append(42) # achteraan toevoegen
Eigenschappen
Wanneer werkt het?
- Op elke lijst — gesorteerd of niet.
- Op lijsten van strings, getallen, of wat dan ook, zolang
==betekenis heeft.
Hoe snel is het?
- Beste geval: doel staat vooraan → 1 vergelijking.
- Slechtste geval: doel staat achteraan of bestaat niet →
nvergelijkingen. - We zeggen: O(n) (lineair in de lengte).
Conventie voor "niet gevonden"
-1— duidelijk geen geldige index.- Of
None— Python-stijl. - Of
raise ValueError(...)— als je écht wil dat de aanroeper het merkt.
Veelgemaakte fouten (snel)
Top-3 fouten
return -1binnen defor-lus → returnt na 1 iteratie.=waar je==bedoelt →SyntaxErrorof stille bug.range(len(lijst) + 1)→IndexErrorop de laatste iteratie.
Klaar met lineair zoeken? Probeer nu vind het maximum en zie hoe je dezelfde "door de lijst lopen"-structuur opnieuw gebruikt.