Hoppa till innehållet
AI-grafen
D· AI-utvecklaredatavetenskap· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

Tidskomplexitet och ordo-notation

Kunna bedöma hur en algoritms tid växer med indata och skilja O(n) från O(n²).

Förkunskaper

Intuition

Ordo (stora O) beskriver hur körtiden växer när indata växer — inte hur många sekunder något tar på just din dator.

OrdoNamn1 000 element1 000 000 element
O(1)konstant11
O(log n)logaritmisk1020
O(n)linjär1 0001 000 000
O(n log n)linjärlogaritmisk10 00020 000 000
O(n²)kvadratisk1 000 00010¹² (för långsamt)

Konstanter och mindre termer stryks: 3n + 50 är O(n), n² + 1000n är O(n²).

Kod

def har_dubbletter_naivt(lista):     # O(n²) — två nästlade loopar
    for i in range(len(lista)):
        for j in range(i + 1, len(lista)):
            if lista[i] == lista[j]:
                return True
    return False

def har_dubbletter_snabbt(lista):    # O(n) — mängden kollar på konstant tid
    sedda = set()
    for x in lista:
        if x in sedda:
            return True
        sedda.add(x)
    return False

Med 10 000 element: den första gör ~50 miljoner jämförelser, den andra 10 000. På en miljon element är den första helt omöjlig medan den andra tar bråkdelar av en sekund.

Räkneregeln: en loop över n är O(n). En loop inuti en loop är O(n²). Halvering per steg är O(log n). Att sortera är O(n log n).

I AI: attention är O(T²) i sekvenslängden — det är därför långa kontexter är dyra, och därför man forskar på alternativ.

Behärskning innebär

  • Anger ordo för en enkel loopstruktur
  • Förklarar varför O(n²) blir ohanterligt vid stora n

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser