FAGPORTALEN

Big-O notation (O(1)/O(log n)/O(n)/O(n log n)/O(n²))

It A · STX · A-niveau · Datastrukturer og algoritmer

💻 Big-O notation (O(1)/O(log n)/O(n)/O(n log n)/O(n²))

Big-O notation udtrykker algoritmeirs tidskompleksitet (og rumkompleksitet) som funktion af inputstørrelse n i worst case.

Kompleksitetsklasser (hurtigst til langsomst): O(1) = konstant tid (hash-tabelopslag, indeksadgang i array). O(log n) = logaritmisk (binær søgning, BST-operationer, heap). O(n) = lineær (linær søgning, én for-løkke). O(n log n) = linearitmisk (merge sort, quick sort i gennemsnit, heap sort). O(n²) = kvadratisk (bubble sort, selection sort, dobbelt indlejret løkke). O(2ⁿ) = eksponentiel (naiv rekursiv Fibonacci, problemet med handelsrejsendes). O(n!) = faktoriel (brute-force rejsende sælger, permutationer).

Rumkompleksitet: O(1) = in-place sortering (insertion sort). O(n) = merge sort (hjælpe-array).

Amortiseret analyse: list.append i Python er O(1) amortiseret — lejlighedsvis O(n) ved resize.

Praktisk: O(n log n) er "godt nok" for de fleste opgaver. O(n²) problematisk ved n > 10.000. Big-O ignorerer konstanter: O(100n) = O(n).

Læringsmål

Sådan kan du arbejde med emnet

Arbejd iterativt med prototyper og dokumentation. Test, evaluér og dokumentér.

Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.

Prøv Fagportalen gratis

🤖 Denne side er skrevet med kunstig intelligens og fagligt gennemgået af Fagportalen, som har det redaktionelle ansvar. Finder du en fejl, så skriv til support@fagportalen.dk.