Ga naar hoofdinhoud

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 n vergelijkingen.
  • 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
  1. return -1 binnen de for-lus → returnt na 1 iteratie.
  2. = waar je == bedoelt → SyntaxError of stille bug.
  3. Het resultaat als index gebruiken zonder op -1 te 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.