Asymptoottinen suoritusaika
Asymptoottinen suoritusaika kuvaa algoritmin suoritusajan rajoja suhteessa algoritmin käsittelemän tietojoukon kokoon. Tietojoukon koon kasvaessa algoritmin suoritusaika lähestyy, mutta ei koskaan lähestymissuunnasta riippuen ylitä tai alita, asymptoottista rajaa. Ajan yksikkönä käytetään yhtä algoritmin suorittamaa askelta. Esimerkiksi hyvin sekoitettu korttipakka, jossa on N korttia voidaan järjestää arvojärjestykseen käymällä pakka läpi korkeintaan N kertaa ja jos havaitaan vierekkäiset kortit väärässä järjestyksessä, vaihdetaan näiden paikkaa (kuplalajittelu). Tällöin korttipakan järjestämisen asymptoottinen ylärajan sanotaan olevan "O(n)". Jos korttipakka on jo järjestyksessä, se havaitaan käymällä kaikki kortit läpi, mistä saadaan asymptoottiseksi alarajaksi "Θ"(n).
Puhtaan matematiikan ja mekaanisen laskennan välillä on useita eroja, joista yksi on monien matematiikan funktioiden asymptoottinen luonne. Mikäli näitä funktioita pyritään ratkaisemaan alkeisoperaatioiden avulla, laskenta-aika venyy. Piin desimaalien laskenta on tästä yksi esimerkki. Käytännössä usein riittää kuvata yhtälö yksinkertaisemmassa muodossa, koska käsiteltävien desimaalien määrä monissa järjestelmissä (esimerkiksi talous-) on rajoitettu. Alla on matemaattinen kuvaus riittävällä tarkkuudella ratkeavasta funktiosta.
Funktioiden kasvunopeudesta käytetään useita eri merkintätapoja. Tässä niistä yleisimmät, eli
Lisäksi vielä vähemmän käytetty merkintätapa:
Matemaattinen merkitys:
"Ο"(g(n)) = {f(n) | 0 ⇐ f(n) ⇐ cg(n) kaikilla n >= n}
missä c on jokin positiivinen reaaliluku ja n on jokin luonnollinen luku.
Merkitään, että f(n) = "Ο"(g(n)).
Ordo-merkintä kuvastaa pahinta mahdollista tapausta. Se rajoittaa ylhäältä päin aidosti algoritmin suoritusaikaa. Esimerkiksi pikalajittelu toimii nopeimmin jos alkiot ovat syötteessä mahdollisimman sekaisin. Lisäyslajittelu toimii nopeimmin jos alkiot ovat jo järjestyksessä, ja hitaimmin jos käänteisessä järjestyksessä. Ordo-notaatiolla jätetään syötteen aiheuttama suoritusajan vaihtelu huomiotta, ja keskitytään vain pahimpaan mahdolliseen tapaukseen, jolloin lajittelu kestää eniten aikaa.
Ordo-notaatiolla siis ilmoitetaan:
Suoritukseen kuluu maksimissaan näin monta alkeisoperaatiota syötteestä riippumatta, mutta se voi valmistua vähemmälläkin
Matemaattinen merkitys:
"Θ"(g(n)) = {f(n) | 0 ⇐ c*g(n) ⇐ f(n) ⇐ cg(n) kaikilla n >= n}
missä c,c on jokin positiivinen reaaliluku ja n on jokin luonnollinen luku.
f(n) on jokin "Θ"(g(n)):ään sisältyvä funktio, toisin sanoen: on olemassa sellaiset vakiot c,c että f(n) on jossain välillä c*g(n)..c*g(n), silloin kun n kasvaa riittävän suureksi.
Θ(g(n)) on siis itse asiassa funktioiden joukko.
Theta-merkintä kertoo sekä hitaimman että nopeimman suoritusajan. Toisin sanoen, algoritmin toimiessa "Θ"(n) -ajassa, se Ordo-notaation perusteellakin toimii "Ο"(n) -ajassa. Mutta, jos algoritmi toimii "Ο"(n) ajassa, siitä ei välittömästi seuraa, että algoritmi toimisi "Θ"(n) -ajassa, sillä "Θ"(f(n)) sisältää "Ο"(f(n)):n mutta "Ο"(f(n)) ei sisällä "Θ"(f(n)):aa.
Theta-notaatiolla siis ilmoitetaan:
Tarvittavien alkeisoperaatioiden määrä on aina tällä välillä syötteestä riippumatta
Osoitetaan että 12n != "Θ"(n).
Väite: 
12n != "Θ"(n) 
Vastaväite:
12n = "Θ"(n)
Tällöin pitää löytyä sellaiset c ja n että:
12n ⇐ cn kaikilla n >= n
Mutta tällöinhän:
12n⇐ c kaikilla n >= n
Josta nähdään, että alkuperäinen väite on tosi 12n != "Θ"(n).
Samalla periaatteella voidaan todistaa, että 12n = "Θ"(n) on tosi.