Ga naar hoofdinhoud

7.10 Cheatsheet — Big O

Snelle referentie. Klap open wat je nodig hebt.

De vier klassen — groei in tabel

Stappen per klasse bij groeiende n
nO(1)O(log n)O(n)O(n²)
101310100
1001710010.000
1.0001101.0001.000.000
10.00011410.000100.000.000
100.000117100.00010.000.000.000
1.000.0001201.000.0001.000.000.000.000

Patronen om te onthouden:

  • O(1): blijft altijd 1.
  • O(log n): verdubbel n → +1 stap.
  • O(n): verdubbel n → verdubbel stappen.
  • O(n²): verdubbel n → vier keer zoveel stappen.
Hoe ontstaat elke klasse?
KlassePatroon in code
O(1)lijst[i], len(lijst), één regel-rekenwerk
O(log n)halveren per stap (binair zoeken)
O(n)één lus door de hele lijst
O(n²)geneste lus, beide over n
O(n³)drie geneste lussen

Decision tree — welke klasse?

Vragen om de klasse te bepalen
Heeft het algoritme een lus door de invoer?
├── Nee → O(1)
└── Ja:
├── Halveert het de zoekruimte per stap?
│ └── Ja → O(log n)
├── Bekijkt het elk element één keer?
│ └── Ja → O(n)
└── Zit er een lus IN de lus (beide over n)?
└── Ja → O(n²)

Per algoritme

Zoeken
AlgoritmeBestGemiddeldSlechtst
Lineair zoekenO(1)O(n)O(n)
Binair zoekenO(1)O(log n)O(log n)

Voorwaarde voor binair zoeken: lijst is gesorteerd.

Vinden van extremen
AlgoritmeBestGemiddeldSlechtst
Vind maximumO(n)O(n)O(n)
Max én min in één passO(n)O(n)O(n)

Geen beste-geval-truc mogelijk — je moet elk element zien om zeker te zijn van het extreem.

Sorteren
AlgoritmeBestGemiddeldSlechtst
Selection sortO(n²)O(n²)O(n²)
Bubble sort (early-exit)O(n)O(n²)O(n²)

In de praktijk gebruik je list.sort() of sorted() — Python's ingebouwde sorteer-algoritme is O(n log n) (Timsort).

Wat tellen we wel en niet

Wat verdwijnt in Big O
  • Constante factoren: 5nO(n).
  • Lagere-orde termen: n² + nO(n²).
  • Vaste opstartkosten: 10 regels initialisatie → O(1) overhead, valt weg bij grote n.
Wat blijft staan in Big O
  • De hoogste-orde term zonder coëfficiënt.
  • Het groeigedrag als n heel groot wordt.
  • De slechtste situatie (worst case), tenzij expliciet anders vermeld.

Top-3 valkuilen

Veelgemaakte denkfouten
  1. Constanten meetellen. O(3n + 5) bestaat niet — schrijf O(n).
  2. Best/worst case verwarren. "Binair zoeken is O(1)" zonder context is misleidend.
  3. Klein n als bewijs. Op 100 elementen is O(n²) even snel als O(n). Test met grote n om de klasse te zien.

Volledig overzicht: stap 9: er gaat iets mis.

Verder lezen