Hvor raskt klarer vi å sortere?

Størrelse: px
Begynne med side:

Download "Hvor raskt klarer vi å sortere?"

Transkript

1 Sortering

2 Sorteringsproblemet Gitt en array med n elementer som kan sammenlignes med hverandre: Finn en ordning (eller permutasjon) av elementene slik at de står i stigende (evt. avtagende) rekkefølge Det er viktig å kunne sortere effektivt: Sortering er alltid #1 forbruker av prosessortid Raske algoritmer for søking, innsetting og fjerning i datastrukturer krever oftest at dataene er sortert Analyse og utvikling av effektive sorteringsalgoritmer er et sentralt forskningsområde i (klassisk) informatikk

3 Hvor raskt klarer vi å sortere? Bare det å se om dataene er sortert er O(n) Rett-frem algoritmer er O(n 2 ) Hvis vi sorterer ved å sammenligne og bytte om to og to elementer, kan det bevises at dette ikke kan gjøres raskere enn O(n log(n)) Smarte sorteringsalgoritmer er O(n log(n)) Hvis vi vet mer om dataene kan vi lage O(n) algoritmer som sorterer med andre mekanismer enn parvise sammenligninger og swapping (jfr. bucket sort og radix sort fra kapitlet om køer)

4 Tre klasser av sorteringsalgoritmer Sekvensielle: Bruker typisk to løkker inne i hverandre, O(n 2 ) Kun brukbare for små problemer Utplukksortering, innstikksortering, bubble sort Logaritmiske: Deler opp problemet i mindre deler og sorterer disse rekursivt, O(n log(n)), mye raskere for store datasett Quicksort, flettesortering Basert på bruk av spesielle datastrukturer: Alle dataene legges inn i en datastruktur og tas ut igjen i sortert rekkefølge, typisk O(n log(n)) Treesort, heapsort

5 Sortering av arrayer forenkling Læreboka bruker generiske metoder i Java som kan sortere arrayer som inneholder alt, så lenge dataene er Comparable For å fokusere på algoritmene og effektiviteten, og ikke på Java, forenkler vi sorteringsproblemet og programkoden til: Sortering av arrayer som bare innholder heltall

6 Utplukksortering (selection sort) Går gjennom arrayen n - 1 ganger I gjennomløp nr i (i = 0, 1, 2,, n - 2) : Arrayen er sortert fra starten og t.o.m. indeks i - 1 Finner det minste av de usorterte elementene på indeksene i, i + 1,, n - 1 ( utplukk / selection ) Setter dette minste elementet inn på indeks i med en ombytting (swapping) Etter n 1 gjennomløp står det største elementet igjen på index n 1, og hele arrayen er sortert

7 Utplukksortering, eksempel

8 Utplukksortering, animasjon

9 Effektivitet og implementasjon Utplukksortering programmeres enkelt med to løkker inne i hverandre: Ytre løkke går n - 1 ganger Indre løkke går n - 2, n - 3,..., 2, 1 ganger Totalt: O(n 2 ) Effektiviteten av utplukksortering er ikke avhengig av dataene, algoritmen gjør alltid like mange tester og ombyttinger Se Java-koden

10 Innstikksortering (insertion sort) Går gjennom arrayen n - 1 ganger I gjennomløp nr i (i = 1, 2, 3,, n - 1) : Arrayen er sortert fra starten og t.o.m. indeks i - 1 Setter element nr i inn på riktig plass blant de i - 1 første elementene ( insertion / innstikk ) Innsettingen gjøres ved å bytte element i med foregående element inntil det står riktig i sorteringen Etter n 1 gjennomløp er alle elementer satt inn på riktig plass og hele arrayen er sortert

11 Innstikksortering, eksempel (0 swap) (1 swap) (0 swap) (2 swap) (5 swap) (2 swap) (7 swap)

12 Innstikksortering, animasjon

13 Effektivitet og implementasjon Innstikksortering programmeres med to løkker inne i hverandre: Ytre løkke går n - 1 ganger Indre løkke går inntil element i står riktig, maksimalt: 1, 2, 3,..., n - 1 ganger Worst-case: O(n 2 ) Effektivitet av innstikksort. avhenger av dataene: Er O(n) for nesten sorterte arrayer Gjennomsnittlig (random data): O(n 2 ) Se Java-koden

14 Bubble sort (litt anderledes enn i læreboka) Går gjennom arrayen n - 1 ganger I gjennomløp nr i (i = 0, 1, 2,,, n - 2) : Arrayen er sortert fra starten og t.o.m. indeks i - 1 Setter det minste av elementene i den gjenværende delen av arrayen på indeks i Finner minste element ved å starte i indeks n - 1 og swappe med foregående element hvis dette er større Fortsetter å swappe minste nabolement fremover, til det minste av de usorterte elementene står i indeks i Små verdier vil under sorteringen boble oppover i arrayen, store elementer synker nedover ( sink sort / percolation sort ) Etter n 1 gjennomløp er alle elementer satt inn på riktig plass og hele arrayen er sortert

15 Bubble sort, eksempel, n = 5 i = 0 i = 1 i = 2 i =

16 Bubble sort, animasjon

17 Effektivitet og implementasjon Bubble sort programmeres med to løkker inne i hverandre: Ytre løkke går n - 1 ganger Indre løkke går n - 1, n - 2, n 3,..., 2, 1 ganger Alltid O(n 2 ) Effektivitet av bubble sort avhenger av dataene: Går langsomt hvis det er mye ombytting av verdier Kan enkelt programmes til å avbryte med en gang arrayen er sortert (0 swaps i et gjennomløp) Se Java-koden

18 Sammenligning av sekvensielle sorteringsmetoder Effektivitet avhenger av hvor mye flytting av data som gjøres en swap tar mye lenger tid enn en if-test Utplukksortering: Forutsigbar, alltid samme effektivitet uansett data Instikksortering: Oftest mest effektiv, gjør lite ombytting Meget rask for nesten-sorterte arrayer Bedre enn smarte algoritmer for små datamengder Bubble sort: Langsom pga. mye swapping, lite brukt Se testprogram for sorteringsalgoritmer

19 Shell sort: En raskere algoritme Aka. inkrementell sortering og gap sort (Donald Shell, 1959) Sorterer f.eks. hvert 100. element innbyrdes med instikksortering, deretter hvert 50. element, hvert 25. element, hvert 12. element etc., og tilslutt alle elementer i siste gjennomgang Grovsorteringen går raskt for store gaps Hele sorteringen går (veldig mye) raskere fordi vi hele tiden bruker innstikksortering på en array som etterhvert vil være nesten sortert

20 Shell sort: Eksempel Shell sort med gap -sekvens 5, 3 og 1: Start: sort : sort : sort :

21 En annen måte å se på Shell sort

22 Shell sort: Animasjon

23 Implementering og effektivitet Shell sort programmeres med tre løkker, der den ytre løkken går gjennom sekvensen av gaps, f.eks. 100, 50, 25, 12, 2, 1 De to indre løkkene gjør innstikksorteringen for hvert gap Effektivitet: Gjennomsnittlig ~ O(n 3/2 ) Erfaring viser at effektiviteten av Shell sort avhenger av valget av gap -sekvens: Shells opprinnelige forslag: n/2, n/4, n/8,..., 2, 1 Bedre: Rund av hvert gap til nærmeste oddetall Enda bedre: n/2, (n/2)/(2.2), (n/2)/(2.2 2 ), (n/2)/(2.2 3 ),..., 1 Se Java-koden og testprogram

24 Andre sekvensielle sorteringer Finnes mange andre forbedringer/varianter av sekvensielle algoritmer som også kan være bedre enn O(n 2 ), f.eks: Comb sort Cocktail sort Odd-even sort Alle disse er polynomiske og derfor før eller senere langsommere enn de logaritmiske O(n log(n)) metodene

25 Logaritmiske sorteringsalgoritmer Rekursive splitt og hersk metoder Deler arrayen i to (helst) omtrent like store deler Hver halvdel sorteres rekursivt på samme måte Metodene gjør et eller annet med de to halvdelene slik at de til slutt kan settes sammen til en hel ferdig sortert array Hvis vi deler i to ~like deler hver gang, blir det ca. log(n) nivåer med rekursive kall Hvis arbeidet som gjøre på hvert nivå samlet er O(n), vil hele sorteringen bli O(n log(n)) To logaritmiske metoder i dette kurset: Quicksort Flettesortering

26 Quicksort T.Hoare, 1960, eg. laget for automatisk oversetting Oftest meget rask i praksis Virker for generelle sorteringsproblemer Krever svært lite ekstra hukommelse Gjennomsnittlig effektivitet er O(n log(n)), worstcase er O(n 2 )

27 Quicksort: Algoritme Sortering av array A av lengde n: Hvis n > 1: Velg (på en eller annen måte) ett element p (kalt partisjoneringselement) i A, f.eks. element nr. 0 eller nr. n/2* Bytt om på elementene i A (partisjonér arrayen) slik at den deles i to deler: Alle elementer som er mindre eller lik p står til venstre Alle elementer som er større enn p står til høyre Partisjoneringselementet p står mellom de to delene Sortér de to delene rekursivt med Quicksort, hele arrayen er da ferdig sortert *: Lærebokens valg

28 Quicksort: Eksempel Bruker første element til å partisjonere (del)array(ene) Nivå 1: Nivå 2: Nivå 3: Nivå 4:

29 Quicksort: Et eksempel til Nivå 1: Nivå 2: Nivå 3: Nivå 4: Nivå 5:

30 Partisjoneringsalgoritmen er partisjoneringselement står riktig plassert swap 2 og står riktig plassert står riktig plassert swap 5 og og 3 står riktig plassert swap 6 og 3, ferdig

31 Quicksort: Animasjon

32 Effektivitet og implementasjon Implementeres med to rekursive kall, der parameterene er øvre og nedre indeks for arraysegmentet som skal sorteres Skiller ut partisjoneringen i en egen metode Er O(n log(n)) i gjennomsnitt (random data) Hvis partisjoneringen gir mange skjeve oppdelinger (f.eks. ved nesten sorterte data) vil Quicksort dele opp arrayen ~n ganger, og algoritmen blir O(n 2 ) Se Java-koden

33 Effektivisering av Quicksort Forbedring av valg av partisjoneringselement, for å redusere muligheten for skjev oppdeling: Sammenlign f.eks. elementene på indeksene 0, n/2 og n-1, og bruk verdien som er i midten Bruk en enklere og lettere ikke-rekursiv metode, f.eks. innstikksortering, til å sortere korte segmenter av arrayen

34 Flettesortering (merge sort) John von Neumann (!), 1945 Velegnet for steinalderens sekvensielle lagringsmedia som magnet- og papirtape, hullkort etc. også utmerket for sortering av lenkede lister (oppgave) Garanterer O(n log(n)) effektivitet Krever at vi bruker ekstra array(er) til å kopiere data frem og tilbake under sortering

35 Flettesortering: Algoritme Sortering av array A av lengde n: Hvis n > 1: Sortér nedre og øvre halvdel av A hver for seg, rekursivt med flettesortering Flett de to halvdelene sammen til en sortert array Hele arrayen er da ferdig sortert

36 Flettesortering: Eksempel oppdeling oppdeling bunn i rekursjonen fletting fletting

37 Fletting av sorterte arraysegmenter

38 Flettesortering: Animasjon

39 Effektivitet og implementasjon Implementeres med to rekursive kall, der parameterene er øvre og nedre indeks for arraysegmentet som skal sorteres Flettingen gjøres ved å kopiere dataene over i en temporær array og deretter flette de to halvdelene tilbake Programmering av flettingen krever indeksfikling Er alltid O(n log(n)), men krever minst O(n) ekstra hukommelse i tillegg til arrayen som sorteres Se Java-koden

40 Quicksort vs. flettesortering Quicksort er vesentlig raskere i de aller fleste tilfeller Flettesortering må alltid flytte data mellom temporær og original array og blir derfor langsommere Flettesortering er alltid O(n log(n)), men... Hvis det er viktig med garantert O(n log(n)) oppførsel, er det bedre å bruke en in-house algoritme som ikke swapper så mye, som f.eks. heapsort Se testprogram for sorteringer

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre: Sortering Sorteringsproblemet Gitt en array A med n elementer som kan sammenlignes med hverandre: Finn en ordning (eller permutasjon) av elementene i A slik at de står i stigende (evt. avtagende) rekkefølge

Detaljer

Logaritmiske sorteringsalgoritmer

Logaritmiske sorteringsalgoritmer Logaritmiske sorteringsalgoritmer Logaritmisk sortering Rekursive og splitt og hersk metoder: Deler verdiene i arrayen i to (helst) omtrent like store deler i henhold til et eller annet delingskriterium

Detaljer

Datastrukturer for rask søking

Datastrukturer for rask søking Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen

Detaljer

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen

Detaljer

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre: Heap Heap* En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger til venstre En heap er også et

Detaljer

Binær heap. En heap er et komplett binært tre:

Binær heap. En heap er et komplett binært tre: Heap Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger så langt til venstre som mulig

Detaljer

INF2220: Time 12 - Sortering

INF2220: Time 12 - Sortering INF0: Time 1 - Sortering Mathias Lohne mathialo Noen algoritmer Vi skal nå se på noen konkrete sorteringsalgoritmer. Gjennomgående i alle eksempler vil vi sortere tall etter tallverdi, men som diskutert

Detaljer

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock Heap og prioritetskø Marjory the Trash Heap fra Fraggle Rock Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs 1 TDT4105 Informasjonsteknologi, grunnkurs Matlab: Sortering og søking Anders Christensen (anders@idi.ntnu.no) Rune Sætre (satre@idi.ntnu.no) TDT4105 IT Grunnkurs 2 Pensum Matlab-boka: 12.3 og 12.5 Stoffet

Detaljer

Definisjon: Et sortert tre

Definisjon: Et sortert tre Binære søketrær Definisjon: Et sortert tre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større

Detaljer

Definisjon av binært søketre

Definisjon av binært søketre Binære søketrær Definisjon av binært søketre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større

Detaljer

Rekursiv programmering

Rekursiv programmering Rekursiv programmering Babushka-dukker En russisk Babushkadukke er en sekvens av like dukker inne i hverandre, som kan åpnes Hver gang en dukke åpnes er det en mindre utgave av dukken inni, inntil man

Detaljer

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010 Hvorfor sortering og søking? Man bør ha orden i dataene umulig å leve uten i informasjonssamfunnet vi blir fort lei av å lete poleksempel internett alt er søking og sortering alternativer til sortering

Detaljer

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn Binære trær Definisjon I et binært tre har hver node enten 0, 1 eller 2 barn Rekursiv definisjon: Et binært tre er enten tomt, eller: Består av en rotnode og to binære trær som kalles venstre subtre og

Detaljer

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy Øvingsforelesning 6 Sorteringsalgoritmer Kristian Veøy veoy@stud.ntnu.no 26.09.08 1 Spørsmål fra øvingsgruppene Må jeg kunne python på eksamen? (Nei) Er det lurt å gjøre alle programmeringsøvingene? (Ikke

Detaljer

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda Først litt praktisk info Sorteringsmetoder Gruppeøvinger har startet http://selje.idi.ntnu.no:1234/tdt4120/gru ppeoving.php De som ikke har fått gruppe må velge en av de 4 gruppende og sende mail til algdat@idi.ntnu.no

Detaljer

INF1010 notat: Binærsøking og quicksort

INF1010 notat: Binærsøking og quicksort INF1010 notat: Binærsøking og quicksort Ragnhild Kobro Runde Februar 2004 I dette notatet skal vi ta for oss ytterligere to eksempler der rekursjon har en naturlig anvendelse, nemlig binærsøking og quicksort.

Detaljer

Quicksort. Fra idé til algoritme.

Quicksort. Fra idé til algoritme. Quicksort Fra idé til algoritme. Quicksortalgoritme algoritmeidé 1. Del arrayen i to deler, slik at alle elementer i den ene delen er mindre enn alle elementer i den andre delen. Q U I C K S O R T A L

Detaljer

Kap.8 Sortering og søking sist oppdatert 16.03

Kap.8 Sortering og søking sist oppdatert 16.03 Kap.8 Sortering og søking sist oppdatert 16.03 Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse Del 2 Sortering - gamle sorteringsmetoder fra i høst - nye -analyse Copyright

Detaljer

Hashing: Håndtering av kollisjoner

Hashing: Håndtering av kollisjoner Hashing: Håndtering av kollisjoner Innsetting av dataelement i hashtabell Algoritme: 1. Bruk en hashfunksjon til å beregne hashverdi basert på dataelementets nøkkelverdi 2. Sett inn dataelementet i hashtabellen

Detaljer

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1 Øvingsforelesning 6 Sorteringsalgoritmer Martin Kirkholt Melhus martme@stud.ntnu.no Basert på foiler av Kristian Veøy 30/09/14 1 Agenda l Spørsmål fra øving 4 l Sortering l Presentasjon av øving 6 30/09/14

Detaljer

Et eksempel: Åtterspillet

Et eksempel: Åtterspillet Trær Et eksempel: Åtterspillet To spillere som «trekker» annenhver gang I hvert trekk velges et av tallene 1, 2, 3, men ikke tallet som motspiller valgte i forrige trekk Valgte tall summeres fortløpende

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

Rekursiv programmering

Rekursiv programmering Rekursiv programmering Babushka-dukker En russisk Babushkadukke er en sekvens av like dukker inne i hverandre, som kan åpnes Hver gang en dukke åpnes er det en mindre utgave av dukken inni, inntil man

Detaljer

Innhold. Innledning 1

Innhold. Innledning 1 Innhold Innledning 1 1 Kompleksitetsanalyse 7 1.1 Innledning.............................. 8 1.2 Hva vi beregner........................... 8 1.2.1 Enkle operasjoner...................... 8 1.2.2 Kompleksitet........................

Detaljer

Quicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort

Quicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort Quicksort Lars Vidar Magnusson 29.1.2014 Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort Om Quicksort Quicksort er en svært populær sorteringsalgoritme. Algoritmen har i verstefall en kjøretid

Detaljer

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger Pensum: fra boken (H-03)+ forelesninger unntatt kursorisk tema KAP. 1 KAP. 2 KAP. 3 JAVA I-110 (ikke gjennomgått) OO + ABSTRAKSJON /GENERISK PROGRAMMERING REKURSJON ALGORITME-TIDSANALYSE; O-NOTASJON KAP.

Detaljer

Et eksempel: Åtterspillet

Et eksempel: Åtterspillet Trær Et eksempel: Åtterspillet To spillere som «trekker» annenhver gang I hvert trekk velges et av tallene 1, 2, 3, men ikke tallet som motspiller valgte i forrige trekk Valgte tall summeres fortløpende

Detaljer

INF2220 høsten 2017, 19. okt.

INF2220 høsten 2017, 19. okt. INF2220 høsten 2017, 19. okt. Sortering (kap. 7.) sekvensiell sortering II Arne Maus, Gruppen for Programmering og Software Engineering (PSE) Inst. for informatikk, Univ i Oslo 1 Hva lærte vi for en uke

Detaljer

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger Pensum: fra boken (H-03)+ forelesninger unntatt kursorisk tema KAP. 1 KAP. 2 KAP. 3 JAVA I-110 (ikke gjennomgått) OO + ABSTRAKSJON /GENERISK PROGRAMMERING REKURSJON ALGORITME-TIDSANALYSE; O-NOTASJON KAP.

Detaljer

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer Heapsort Lars Vidar Magnusson 24.1.2014 Kapittel 6 Heaps Heapsort Prioritetskøer Sorterings Problemet Sorterings problemet er et av de mest fundementalske problemene innen informatikken. Vi sorterer typisk

Detaljer

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013 NITH PG00 Algoritmer og datastrukturer Løsningsforslag Eksamen.juni 0 Dette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. Det er altså ikke et eksempel

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

deeegimnoorrrsstt Sjette forelesning

deeegimnoorrrsstt Sjette forelesning deeegimnoorrrsstt Sjette forelesning 1 2 Rebus. Hva er dette? Svar: Kvadratiske sorteringsalgoritmer :-> Som vanlig relativt abstrakte beskrivelser her. Ta en titt på pseudokode i boka for mer detaljert

Detaljer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til

Detaljer

INF2220: Time 4 - Heap, Huffmann

INF2220: Time 4 - Heap, Huffmann INF0: Time 4 - Heap, Huffmann Mathias Lohne mathialo Heap (prioritetskø) En heap (også kalt prioritetskø) er en type binært tre med noen spesielle struktur- og ordningskrav. Vi har to typer heap: min-

Detaljer

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {} En implementasjon av binærtre Dagens tema Eksempel på binærtreimplementasjon Rekursjon: Tårnet i Hanoi Søking Lineær søking Klassestruktur hovedstruktur abstract class { class Person extends { class Binaertre

Detaljer

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15 http://www.idi.ntnu.no/~algdat algdat@idi.ntnu.no Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15 b c g a f d e h The pitch drop experiment. Foreløpig kjørt fra 1927 til nå. Åtte dråper har

Detaljer

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

O-notasjon og kompleksitet

O-notasjon og kompleksitet 1 TDT4105 Informasjonsteknologi, grunnkurs Matlab: Sortering og søking Kunnskap for en bedre verden Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf:

Detaljer

Palindrom - iterativt

Palindrom - iterativt 1 TDT4105 Informasjonsteknologi, grunnkurs Matlab: Sortering og søking Kunnskap for en bedre verden Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf:

Detaljer

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

Liste som abstrakt konsept/datatype

Liste som abstrakt konsept/datatype Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert

Detaljer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til

Detaljer

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl Student nr.: Side 1 av 7 Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl 0900-1500 Faglig kontakt under eksamen: Arne Halaas, tlf. 73 593442. Hjelpemidler:

Detaljer

n/b log b n = (lg n) a log b n = n log b a

n/b log b n = (lg n) a log b n = n log b a Masterteoremet 1 T (n) = at (n/b) + f(n) Antall «barn»: Størrelse per «barn»: «Høyde»: a n/b log b n = (lg n) Rota har f(n) arbeid; hver løvnode har en konstant mengde arbeid. Hva vil dominere totalen?

Detaljer

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006 Løsningsforslag for Obligatorisk Oppgave 2 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.02.14 Den andre obligatoriske oppgaven tar for seg forelesning 5, 6, og 7 som dreier seg om

Detaljer

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b Oppgave 1 1 a INF1020 Algoritmer og datastrukturer Forelesning 14: Gjennomgang av eksamen vår 2001 oppgave 1,2,4 Arild Waaler Institutt for informatikk, Universitetet i Oslo Oppgave 1 a Programmer en ikke-rekursiv

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i: INF2440 Effektiv parallellprogrammering Prøveeksamensdag: 1. juni 2016 Tidspunkter: 09.00 16.00 Oppgavesettet er på: 4 sider

Detaljer

Algoritmer - definisjon

Algoritmer - definisjon Algoritmeanalyse Algoritmer - definisjon En algoritme* er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 3. november 2, kl. 9. - 14. Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål Forstå, og kunne bruke, algoritmer

Detaljer

Backtracking som løsningsmetode

Backtracking som løsningsmetode Backtracking Backtracking som løsningsmetode Backtracking brukes til å løse problemer der løsningene kan beskrives som en sekvens med steg eller valg Kan enten finne én løsning eller alle løsninger Bygger

Detaljer

8NH )RUHOHVQLQJ 'HSDUWPHQWÃRIÃ,QIRUPDWLFVÃ8QLYHUVLW\ÃRIÃ2VORÃ1RUZD\,1) ± $OJRULWKPVÃÉÃ'DWDÃ6WUXFWXUHV

8NH )RUHOHVQLQJ 'HSDUWPHQWÃRIÃ,QIRUPDWLFVÃ8QLYHUVLW\ÃRIÃ2VORÃ1RUZD\,1) ± $OJRULWKPVÃÉÃ'DWDÃ6WUXFWXUHV :/ 8NH )RUHOHVQLQJ +86.± +LWWLO«Sortering: Sammenligning-baserte: Baserer seg på sammenligning av elemntene i a[ ] Eksempler: Instikk, boble, utplukk Alle tar kvadratisk tid 1 7(0$6RUWHULQJ )RUWVHWWHUPHG

Detaljer

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF1010 Sortering. Marit Nybakken 1. mars 2004 INF1010 Sortering Marit Nybakken marnybak@ifi.uio.no 1. mars 2004 Dette dokumentet skal tas med en klype salt og forfatter sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

Binære trær: Noen algoritmer og anvendelser

Binære trær: Noen algoritmer og anvendelser Binære trær: Noen algoritmer og anvendelser Algoritmer / anvendelser: Søking i usortert binært tre Telling av antall noder og nivåer i treet Traversering av binære trær Binære uttrykkstrær Kunstig intelligens(?):

Detaljer

Algoritmer - definisjon

Algoritmer - definisjon Algoritmeanalyse Algoritmer - definisjon En algoritme er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang 1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis Professor Alf Inge Wang 2 Læringsmål og pensum Mål Lære å forstå og kunne programmere algoritmer for søk og sortering. Lære å forstå

Detaljer

Læringsmål og pensum. Algoritmeeffektivitet

Læringsmål og pensum. Algoritmeeffektivitet 1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis Professor Alf Inge Wang 2 Læringsmål og pensum Mål Lære å forstå og kunne programmere algoritmer for søk og sortering. Lære å forstå

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 og IN 110 Algoritmer og datastrukturer Eksamensdag: 14. mai 1996 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

Detaljer

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 Delkapittel 1.3 Ordnede tabeller Side 1 av 70 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 1.3 Ordnede tabeller 1.3.1 Permutasjoner En samling verdier kan settes opp i en rekkefølge. Hver

Detaljer

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 Delkapittel 1.3 Ordnede tabeller Side 1 av 74 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 1.3 Ordnede tabeller 1.3.1 Permutasjoner En samling verdier kan settes opp i en rekkefølge. Hver

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER Stud. nr: Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap AVSLUTTENDE

Detaljer

Sortering i Lineær Tid

Sortering i Lineær Tid Sortering i Lineær Tid Lars Vidar Magnusson 5.2.2014 Kapittel 8 Counting Sort Radix Sort Bucket Sort Sammenligningsbasert Sortering Sorteringsalgoritmene vi har sett på så langt har alle vært sammenligningsbaserte

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 10. desember 1998, kl. 09.00-15.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

INF2220 høsten 2017, 12. okt.

INF2220 høsten 2017, 12. okt. INF høsten 7,. okt. Sortering (kap. 7.) sekvensiell sortering I Arne Maus, Gruppen for Programmering og Software Engineering (PSE) Inst. for informatikk, Univ i Oslo Essensen av INF Lære et sett av gode

Detaljer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF 2220 Algoritmer og datastrukturer Eksamensdag: 8. desember 2016 Tid for eksamen: 09:00 13:00 (4 timer) Oppgavesettet er på:

Detaljer

INF2220 høsten 2015, 5. nov.

INF2220 høsten 2015, 5. nov. INF høsten,. nov. Sortering del I (kap. 7.) Arne Maus, Gruppen for Programmering og Software Engineering (PSE) Inst. for informatikk, Univ i Oslo Essensen av kurset Lære et sett av gode (og noen få dårlige)

Detaljer

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013 NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 20 ette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. et er altså ikke et eksempel

Detaljer

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Løsnings forslag i java In115, Våren 1999

Løsnings forslag i java In115, Våren 1999 Løsnings forslag i java In115, Våren 1999 Oppgave 1a Input sekvensen er: 9, 3, 1, 3, 4, 5, 1, 6, 4, 1, 2 Etter sortering av det første, midterste og siste elementet, har vi følgende: 2, 3, 1, 3, 4, 1,

Detaljer

INF2220 høsten 2016, 9. nov.

INF2220 høsten 2016, 9. nov. INF høsten, 9. nov. Sortering del I (kap. 7.) Arne Maus, Gruppen for Programmering og Software Engineering (PSE) Inst. for informatikk, Univ i Oslo Essensen av kurset Lære et sett av gode (og noen få dårlige)

Detaljer

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg Øvingsforelesning 3: Splitt og hersk Daniel Solberg Plan for dagen Vi går raskt gjennom øving 2 Splitt og hersk Algoritmer: Mergesort Quicksort Binærsøk Rekurrenser, masse rekurrenser 2 Splitt og hersk

Detaljer

Fig1. Den konvekse innhyllinga av 100 tilfeldige punkter i planet (de samme som nyttes i oppgaven.)

Fig1. Den konvekse innhyllinga av 100 tilfeldige punkter i planet (de samme som nyttes i oppgaven.) Oblig3 i INF2440 våren 2015-ver3. Den konvekse innhyllinga til en punktmengde - et rekursivt geometrisk problem. Innleveringsfrist fredag 27. mars kl. 23.59 En punktmengde P i planet består av n forskjellige

Detaljer

Anbefalte forkunnskaper Studentene forutsettes å kunne programmere, for eksempel ved å ha tatt TDT4100 Objektorientert programmering.

Anbefalte forkunnskaper Studentene forutsettes å kunne programmere, for eksempel ved å ha tatt TDT4100 Objektorientert programmering. Anbefalte forkunnskaper Studentene forutsettes å kunne programmere, for eksempel ved å ha tatt TDT4100 Objektorientert programmering. Studentene forutsettes også å ha kunnskaper om funksjoner, logaritmer,

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF2440 Praktisk parallell programmering Prøveeksamensdag : 26. mai 2014 Tidspunkter: 11.00 Utdeling av prøveeksamen 15:15

Detaljer

Backtracking som løsningsmetode

Backtracking som løsningsmetode Backtracking Backtracking som løsningsmetode Backtracking løser problemer der løsningene kan beskrives som en sekvens med steg eller valg Kan enten finne én løsning eller alle løsninger Bygger opp løsningen(e)

Detaljer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Oppgavesettet består av 8 (åtte) sider. NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Tillatte hjelpemidler: Ingen Side 1 av 8 Varighet: 3 timer Dato: 4.juni 2013 Fagansvarlig:

Detaljer

Stack. En enkel, lineær datastruktur

Stack. En enkel, lineær datastruktur Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi

Detaljer

Flerveis søketrær og B-trær

Flerveis søketrær og B-trær Flerveis søketrær og B-trær Flerveis (multi-way, n-ært) søketre Generalisering av binært søketre Binært søketre: Hver node har maksimalt 2 barn og 1 nøkkelverdi. Barna ligger sortert på verdi i forhold

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF2220 Algoritmer og datastrukturer Eksamensdag: 16. desember 2013 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider.

Detaljer

Løsningsforslag for utvalgte oppgaver fra kapittel 3

Løsningsforslag for utvalgte oppgaver fra kapittel 3 Løsningsforslag for utvalgte oppgaver fra kapittel 3 3.3 1 Demo innsettingssortering..................... 1 3.5 1 Demo velgesortering........................ 2 3.5 2 Velgesortering...........................

Detaljer

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014 Løsningsforslag Dette er et utbygd løsningsforslag. D.v.s at det kan forekomme feil og at løsningene er mer omfattende enn det som kreves av studentene på eksamen. Oppgavesettet består av 5 (fem) sider.

Detaljer

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar

Detaljer

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2015 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2015, forelesning

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2015 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2015, forelesning

Detaljer

Obligatorisk oppgave 1 i INF 4130, høsten 2008

Obligatorisk oppgave 1 i INF 4130, høsten 2008 Obligatorisk oppgave 1 i INF 4130, høsten 2008 Leveringsfrist 3. oktober Institutt for informatikk Krav til innleverte oppgaver ved Institutt for informatikk (Ifi) Ved alle pålagte innleveringer av oppgaver

Detaljer

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013 Binære søketrær Et notat for INF Stein Michael Storleer 6. mai 3 Dette notatet er nyskrevet og inneholder sikkert feil. Disse vil bli fortløpende rettet og datoen over blir oppdatert samtidig. Hvis du

Detaljer

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består

Detaljer

Algoritmer og Datastrukturer IAI 21899

Algoritmer og Datastrukturer IAI 21899 Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 30. november 2000, kl. 09.00-14.00 LØSNINGSFORSLAG 1 Del 1, Binære søketrær Totalt

Detaljer

Selv-balanserende søketrær

Selv-balanserende søketrær Selv-balanserende søketrær Georgy Maksimovich Adelson-Velsky Evgenii Mikhailovich Landis Søketrær og effektivitet O(log n) effektivitet av binære søketrær kan ikke garanteres Treet til venstre har høyde

Detaljer

Vi skal se på grafalgoritmer for:

Vi skal se på grafalgoritmer for: Grafalgoritmer Vi skal se på grafalgoritmer for: Traversering: Oppsøk alle nodene i grafen en og bare en gang, på en eller annen systematisk måte Nåbarhet: Finnes det en vei fra en node til en annen node?

Detaljer