Yleisimpien tietorakenteiden operaatioiden aikavaativuudet

List Add Remove(i / obj) Get Set Contains Next Data Structure
ArrayList O(1) O(n) O(1) O(1) O(n) O(1) Array
LinkedList O(1) O(n) O(n) O(n) O(n) O(1) Linked List


Queue Offer Peak Poll Remove Size Data Structure
PriorityQueue O(log n) O(1) O(log n) O(n) O(1) Priority Heap
LinkedList O(1) O(1) O(1) O(1) O(1) Array
ArrayDequeue O(1) O(1) O(1) O(n) O(1) Linked List


Set Add Remove Contains Next Size Data Structure
HashSet O(1) O(1) O(1) O(h/n) O(1) Hash Table
LinkedHashSet O(1) O(1) O(1) O(1) O(1) Hash Table + Linked List
EnumSet O(1) O(1) O(1) O(1) O(1) Bit Vector
TreeSet O(log n) O(log n) O(log n) O(log n) O(1) Red-black tree


Map Get ContainsKey Next Data Structure
HashMap O(1) O(1) O(h / n) Hash Table
LinkedHashMap O(1) O(1) O(1) Hash Table + Linked List
TreeMap O(log n) O(log n) O(log n) Red-black tree

Peräkkäisrakenteet

Helppoja ja tehokkaita oikein käytettyinä

Linkitetty Lista

pino

Avopino

Jono

Pakka

Rengas

Taulukko

ArrayList

Vector

kuva aikavaativuuksista

Puut

Kaikkien operaatioiden aikavaativuus tehokkaassa toteutuksessa on O(1)

Binääri Puu

Tasapainotettu binääripuu

Yleinen Puu

Muita puita


Joukot

HashSet

LinkedHashSet

TreeSet

Sanakirjat

Vain yhtä joukkoa hallitsevaa kokoelmaa sanotaan sanakirjaksi

Relaatio

???

Kuvaus

HashMap

TreeMap

Monilista

??

PrioriteettiJono

Määritellään joukon alkioille prioriteetti (tärkeysjärjestys, kiireellisyysjärjestys)

Laukku

Sama alkio useasti kokoelmassa


Verkot - Graphs

Useita seuraajia ja edeltäjiä

Läpikäynti

Solmujen värjääminen

Syvyyssuuntainen läpikäynti

Puukaari

Johtavat käsittelemättömiin solmuihin

Paluukaari

Johtavat solmusta esi-isään

Etenemiskaari

Johtavat solmusta jälkeläiseen

Ristikkäiskaari

Eivät johda esi-isään eivätkä jälkeläiseen

Verkon algoritmeja

Primin algoritmi

Aikavaativuus O(eloge)

Pahimmassa tapauksessa O(n²logn)

Kruskaalin algoritmi

Aikavaativuus O(eloge)

Dijkstran algoritmi

Aikavaativuus O()

Suuntaamattoman verkon läpikäynti

Leveyssuuntainen läpikäynti

käsitellään kaikki solmun naapurit -> käsitellään kaikki naapureiden naapurit

Syvyyssuuntainen läpikäynti

käsitellään kaikki solmun naapurin naapurit ennen seuraavan solmun naapurin kääsittelyä vrt. puun läpikäynti sisäjärjestyksessä

Käsitteitä

Sovitus

Sovitetaan joukot yhteen kriteereiden mukaan. esim yhdistetään opettajat ja kurssit siten, että kaikille kursseille on sopiva opettaja


Abtraktien tietotyyppien toteuttaminen

Abstraktit tietotyypit täytyy toteuttaa (implement)

Listan taulukkopohjainen toteutus

Puiden toteuttaminen

Verkkojen toteuttaminen


Joukkojen toteuttaminen

Hajautus - hashing


Järjestäminen / Lajittelu

Kupla järjestäminen

Upotus järjestäminen / lisäysjärjestäminen

Pikajärjestäminen - quick sort

Kekojärjestäminen - heap sort

Lomitusjärjestäminen - merge sort

Kaukalojärjestäminen - bin sort

Aikavaativuuden kertaluokka merkinnät

Merkintä Tarkoitus
Iso O rajoittaa ylhäältä
Iso Omega Ω rajoittaa alhaalta
Theta Θ rajoittaa ylhäältä ja alhaalta
pikku o rajoittaa aidosti ylhäältä
pikku omega ω rajoittaa aidosti alhaalta