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 meteen; 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: het doel staat vooraan, dus één vergelijking.
- Slechtste geval: het doel staat achteraan of komt niet voor, dus
nvergelijkingen. - Dat noemen we
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.- Het resultaat als index gebruiken zonder op
-1te checken →lijst[-1]geeft stil het laatste element.
Klaar met lineair zoeken? Probeer nu vind het maximum en zie hoe je dezelfde "door de lijst lopen"-structuur opnieuw gebruikt.