INF1010 e-postadresser

Størrelse: px
Begynne med side:

Download "INF1010 e-postadresser"

Transkript

1 INF1010 e-postadresser Ikke-faglige spørsmål til Faglige spørsmål til blogen eller til brukernavn kristoeb josek stianf bendiko bmmender espeak richar daghf larsstor fredva navn Kristoffer Egil Bonarjee Jose Louis Rojas Stian Kjetil Friberg Bendik Rønning Opstad Bedeho Mender Espen Angell Kristiansen Richard Rørmark Dag Haavi Finstad Lars Storjord Fredrik Valdmanis Spørsmål om pensum, forelesninger, øvelser og innhold i oppgaver kan sendes til plenumslærere og forelesere: brukernavn navn steing Stein Gjessing michael Stein Michael Storleer espeak Espen Angell Kristiansen jpaasen Jon Petter Åsen

2 Dagens forelesning Pekerkjedelister Om pekervariable Innsetting Innsetting og holde sortert Traversering av hele lista Strenger Sammenligne strenger String.compareToIgnoreCase(String s) Binære trær Litt om effektivitet Liste versus binærtre Et binærtreeksempel Binærtreoperasjoner Sette personobjekt inn i treet Finne et personobjekt med et gitt navn Oppgaver Programmeringsoppgaver til plenumsøvelsen

3 Om pekervariable Forskjellen mellom variable og pekere, begreper primitive types reference types variabel pekere pekervariable Veldig viktig å vite om det er en variabel eller en peker. Siden en peker også forandrer verdi (hva den peker på) er den variabel, og kalles derfor ofte variabel. Vi kan ikke se av navnet om det er en variabel eller en peker. I personlisteeksempelet er p.rang en variabel (av type int), mens p.nesteperson er en peker (av type Person).

4 Om pekervariable Forskjellen mellom variable og pekere En variabel (av 8 forskjellige typer) har en verdi. De vanliste typene er: int boolean double char En peker inneholder en adresse, eller referanse til et objekt. Variablene med verdier ligger evt. i objektet, og kan bare leses og forandres indirekte. int 0 i int i = 0; int <fig venstre> i = 56731; i Person pp = new Person(); Person p = null; Person Person p pp P = pp; Person Person p pp «p settes til å peke på det samme som pp (peker på)»

5 Innsetting Innsetting først 1 void settinnpersonforst( Person inn ) { 2 \\ Hvis l i s t a er tom, sett inn objektet 3 i f ( personliste == null ) personliste = inn ; 4 else { 5 \\ minst et objekt i lista 6 inn. nesteperson = personliste ; 7 personliste = inn 8 } 9 }

6 Innsetting Innsetting sist (uten «sistepeker») 1 void settinnpersonsist( Person inn ) { 2 \\ Hvis l i s t a er tom, sett inn objektet 3 i f ( personliste == null ) personliste = inn ; 4 else { 5 \\ finne siste element i lista 6 Person p = personliste ; 7 while (p. nesteperson! = null ) 8 p = p. nesteperson ; 9 \\ her er p. nesteperson==null, altså er p siste 10 p. nesteperson = inn 11 } 12 }

7 Innsetting Et listeobjekt med peker til siste element i lista Person Person Person Person Person nesteperson String navn nesteperson String nesteperson String nesteperson String nesteperson String Jonathan Susanne Imran Nikita Elisabeth navn navn navn navn null Person personliste Person sisteperson Et objekt av klassen Personer

8 Innsetting og holde sortert Antar at Person-objektene i lista har et attributtint rang som objektene er sortert etter i stigende rekkefølge. Elementet som skal inn må da ikke havne så langt ut i lista at det får et element med høyere verdi på rang før seg selv. Vi leter oss fram til en tom nestepeker, eller til nesteperson peker på et objekt med høyere rang. Dette synes ganske enkelt, men vi vil se at når metoden skal virke både for en tom og en ikke-tom liste og for en liste som bare har et objekt, blir det nokså omstendelig. personliste == null innobjektet skal inn først innobjektet skal inn sist innobjektet skal hverken først eller sist

9 Innsetting og holde sortert 1 void settinnpersonetterrang( Person inn ) { 2 Person p = personliste ; 3 Boolean fortsett = true ; 4 inn. nesteperson = null ; // hvorfor? 5 while (p!= null && fortsett ) 6 if (p. nesteperson!= null && p. nesteperson. rang < inn. rang ) 7 p = p. nesteperson; 8 else fortsett = false ; 9 //p == null eller p. nesteperson. rang >= inn. rang 10 if (p == null ) { 11 // lista var tom 12 personliste = inn ; 13 } 14 else if (p == personliste ) { 15 if (p.rang < inn. rang ) { 16 inn. nesteperson = p. nesteperson; 17 personliste = inn ; 18 } 19 else { 20 inn. nesteperson = personliste ; 21 personliste = inn ; 22 } 23 } 24 else { 25 // inn skal inn mellom p og p. nesteperson 26 inn. nesteperson = p. nesteperson; 27 p. nesteperson = inn ; 28 } 29 }

10 Innsetting og holde sortert I settinnpersonetterrang linje 16: personliste p inn 7 inn.nesteperson = p.nesteperson; personliste p inn 7

11 Innsetting og holde sortert personliste p inn 7 personliste = inn; p personliste inn personliste

12 Innsetting og holde sortert 1 void settinnpersonetterrang( Person inn ) { 2 Person p = personliste ; 3 Boolean fortsett = true ; 4 inn. nesteperson = null ; // hvorfor? 5 while (p!= null && fortsett ) 6 if (p. nesteperson!= null && p. nesteperson. rang < inn. rang ) 7 p = p. nesteperson; 8 else fortsett = false ; 9 //p == null eller p. nesteperson. rang >= inn. rang 10 if (p == null ) { 11 // lista var tom 12 personliste = inn ; 13 } 14 else if (p == personliste ) { 15 if (p.rang < inn. rang ) { 16 inn. nesteperson = p. nesteperson; 17 p. neste = inn ; 18 } 19 else { 20 inn. nesteperson = personliste ; 21 personliste = inn ; 22 } 23 } 24 else { 25 // inn skal inn mellom p og p. nesteperson 26 inn. nesteperson = p. nesteperson; 27 p. nesteperson = inn ; 28 } 29 }

13 Innsetting og holde sortert I settinnpersonetterrang linje 16: personliste p inn 7 inn.nesteperson = p.nesteperson; personliste p inn 7

14 Innsetting og holde sortert personliste p inn 7 p.nesteperson = inn; personliste p inn personliste

15 Innsetting og holde sortert Legg merke til at følgende fungerer korrekt når objektet som inn peker på skal inn mellom objektet som p peker på og objektet som p.neste peker på, selv når p.neste er null (p peker på siste objekt): 1 inn. neste = p. neste ; 2 p. neste = inn ; Da kan vi dele problemet i 3 tilfeller etter hvor innobjektet skal inn: lista er tom først etter objektet (evt. null) p peker på Dette kan vi bruke til å lage en enklere metode. (Oppgave som gjennomgås mandag).

16 Traversering av hele lista Eksempel: skrive ut alle personene i lista 1 // I klassen Personer : 2 3 void skrivalle ( ) { 4 Person p = personliste ; 5 while (p! = null ) { 6 p. skriv ( ) ; 7 p = p. nesteperson ; 8 } 9 } // I klassen Person : 12 void skriv ( ) { 13 System. out. println (... ) ; 14 }

17 Traversering av hele lista Fjerne person med gitt rang (en instans eller ingen) 1 Person fjern ( int rang) { 2 Person p = personliste ; 3 Person forrige = null ; 4 while (p!= null && p. rang!= rang { 5 forrige = p; 6 p = p. nesteperson; 7 } 8 // p er personen som skal fjernes, 9 // forrige er personen FØR denne i listen 10 if (p!= null ) { 11 i f ( p == personliste ) { 12 // Spesialtilfelle : p som skal fjernes står først 13 personliste = personliste. nesteperson; 14 } else { 15 forrige. nesteperson = p. nesteperson; 16 } 17 } 18 return p; 19 }

18 Sammenligne strenger String.compareToIgnoreCase(String s) public int comparetoignorecase(string str) Compares two strings lexicographically, ignoring case differences. This method returns an integer whose sign is that of calling compareto with normalized versions of the strings where case differences have been eliminated by calling Character.toLowerCase(Character.toUpperCase(character)) on each character. Parameters str - the String to be compared. Returns: a negative integer, zero, or a positive integer as the the specified String is greater than, equal to, or less than this String, ignoring case considerations. Ved å sammenligne strenger, kan vi ordne dem leksiografisk (alfabetisk som i en ordbok).

19 Sammenligne strenger String.compareToIgnoreCase(String s) Gitt to tekststrenger: Stringa,b; a.comparetoignorecase(b) > 0 hvisa>b = 0 hvisa=b < 0 hvisb>a Husketriks: vi tenker oss at vi girapostiv, ogbnegativ «alfabetisk vekt». Så legger vi de to vektene sammen. Er summen null, eraogblike. Er summen negativ erb alfabetisk større enna. Er summen positiv, er a størst. Pluss kommer først (a), så minus (b). Kortere: +.comparetoignorecase( )

20 Litt om effektivitet I små programmer betyr det ikke noe om vi gjør operasjoner på en ineffektiv måte. Datamaskinen er så rask at det som skal gjøres skjer fort nok. Med mange objekter i datastrukturen, eller med unødvendige repetisjoner av operasjoner, kan programmet fort bli så tidkrevende at det er ubrukelig. Har vi mange elementer i lista og vi forventer ofte å måtte foreta operajoner som å finne et bestemt element, eller å sortere lista, finnes det en langt bedre pekerkjedestruktur med hensyn til effektivitet. Men først noen ord om effektivitet.

21 Litt om effektivitet Eksempel på liste med mange objekter I folkeregisteret er det registrert nesten 5 millioner personer. Hvis disse ligger i en liste slik at vi hver gang vi skal finne en person må starte på begynnelsen av lista, kan vi forvente å måtte gjøre ca 2,5 millioner sammenligninger før vi finner personen vi er ute etter. Hvis det tar ett tusendels sekund å gjøre en sammenligning, kan vi forvente at det tar ca , 001s= 2.500s eller ca 2.500s/60=40 minutter å finne en bestemt person.

22 Litt om effektivitet Hvor lang tid vil det ta å sortere lista ved å finne det minste elementet med metoden over, ta det ut å sette det inn i en ny sortert liste, når vi bare ser på tiden det tar å finne objektene? Svar: Ca 95 år! Fordelen med pekerkjedelister, er at vi ikke trenger å vite noe om hvor mange elementer som skal inn i lista. Ulempen er at pekeradministrasjon lett fører til feil, og at store datamengder (mange elementer) blir ineffektivt.

23 Litt om effektivitet Når datamengden blir «stor», eller vi må gjøre en operajon «mange ganger», må vi også tenke på om programmet vi lager er effektivt, dvs. ikke tar «for lang» tid. Hva som er store datamengder, mange ganger og lang tid er tema for andre emner enn INF1010, men enkle resonnementer og beregninger rundt et programs effektivitet er det greit å kunne gjøre. Vi bør også kjenne til at datastrukturer og algoritmers kvalitet i stor grad avhenger av effektivitet (= tidsforbruk).

24 Liste versus binærtre I folkeregistereksempelet over så vi at en enkeltkjedet liste med en førstepeker er en lite egnet struktur når vi ofte skal finne objekter med et bestemt fødselsnummer. Det finnes derimot en pekerstruktur som er like dynamisk som lista, men som gjør at vi kan finne et bestemt objekt mange ganger mer effektivt. Denne datastrukturen er et binært søketre, eller et binærtre.

25 Liste versus binærtre Hvordan ideen kan ha blitt til

26 Liste versus binærtre I hvert nivå i et binært søketre, er det plass til dobbelt så mange elementer som nivået over. Når vi leter går vi bare fra et nivå til det neste i ett skritt (tilsvarer p = p.neste for lister). På første nivå er det plass til ett element, på neste 2, det neste 4, 8, På nivå 23, er det plass til elementer. I nivåene over, er det plass til elementer, tilsammen over 8 millioner elementer, hvilket er nok for vårt folkeregister

27 Liste versus binærtre Pekerstrukturen i et binærtre Det som gjenstår, er å organisere dataene slik at vi finner søkte element ved å undersøke maksimum 23 elementer. Siden halvparten av objektene ligger i nivå 1-22, må vi i snitt regne med å lete oss fram til nivå 22. Hvis letetiden er den samme som for lista, finner vi et element i løpet av 22 0, 001s = 0, 022s omtrent to hundredels sekund. Jørgen Gunnar Stian Eirik Jan Pål Torjus Christian Elisabeth Henrik Jim Nikita Siv Susanne Vivi Andreas Darjan Gry Helge Imran Nguyen Philip Simen Tor

28 Et binærtreeksempel Vi skriver om class Person slik at den nå har to personpekere: 1 class Person { 2 String navn; 3 Person venstre, // Peker t i l pers. alfabetisk før denne 4 høyre ; // Peker t i l pers. alfabetisk etter denne 5 } type: String navn: navn type: Person venstre "Sokrates" type: Person høyre Sokrates Forenklet objekt Et objekt av klassen Person

29 Et binærtreeksempel Ideen er å ordne objektene slik at alle personene som vi finner ved å følge høyre-pekeren (høyre subtre) er alfabetisk større enn dette objektets navn. Tilsvarende skal alle personobjekter vi kan finne ved å følge venstre-pekeren (venstre subtre) være alfabetisk mindre enn dette objektets navn. Merk at siden et objekt der begge pekervariablene er null også er et binært tre (en «spire uten grener»), peker alle pekervariablene på trær av mindre og mindre størrelse etter som vi følger pekerne fra «rota» mot «bladene».

30 Et binærtreeksempel Jasmina Imran Nikita Objekter som har navn som kommer alfabetisk foran (mindre enn) "Imran" Objekter hvor navn er større enn "Nikita"

31 Et binærtreeksempel Andreas Christian Darjan Eirik Elisabeth Gry Gunnar Helge Henrik Imran Jan Jim Jørgen Nguyen Nikita Philip Pål Simen Siv Stian Susanne Tor Torjus Vivi Fra sortert liste (øverst) til binært søketre Jørgen Gunnar Stian Eirik Jan Pål Torjus Christian Elisabeth Henrik Jim Nikita Siv Susanne Vivi Andreas Darjan Gry Helge Imran Nguyen Philip Simen Tor

32 Sette personobjekt inn i treet Når vi skal legge til et personobjekt, sjekker vi først navnet til førsteperson. Her har vi fire muligheter: 1. førsteperson == null, objektet med innavnet er første objekt. 2. innnavnet er likt, ingenting legges til (i dette eksemplet) 3. innavnet er større og personen skal legges til (treet) høyre 4. innavnet er mindre og personen skal legges til (treet) venstre

33 Sette personobjekt inn i treet Metoden vi bruker for å legge til et objekt har en personpeker som parameter. Personen som personpekeren peker på skal settes inn i treet. Metoden er definert i en omgivelse der Person persontreet peker på personobjektet som er roten i hele treet. Metoden kalles med kallet settinnitre(nyperson); Hvordan vi sammenligner tekststrenger er ikke vesentlig her, men i eksemplet har jeg brukt comparetoignorecase (fra String-klassen) som returnerer et heltall (se ovenfor). Vi lager en skisse:

34 Sette personobjekt inn i treet 1 void settinnitre ( Person inn ) { 2 // Objektet pekt på av inn skal inn i persontreet 3 i f ( persontreet == null ) persontreet = inn ; 4 else { 5 Person pp = treet ; 6 while ( pp! = null ) { 7 int smnlgn = pp.navn.comparetoignorecase ( inn.navn ) ; 8 if ( smnlgn < 0 ) pp = pp.høyre ; 9 else if ( smnlgn > 0 ) pp = pp. venstre ; 10 } 11 if ( smnlgn < 0 ) 12 <sett innpersonen i treet pekt på av høyre> 13 else i f ( smnlgn > 0 ) 14 <sett innpersonen i treet pekt på av venstre > 15 } 16 }

35 Sette personobjekt inn i treet Metoden er korrekt hvis treet er tomt. Hvis treet ikke er tomt (tre!= null) vandrer vi nedover (sic!) treet til vi finner et personobjekt hvor pekeren «videre» er null. Her skal objektet settes inn. I skissen på forrige lysark er vi framme når pp == null; Vi har da ikke lenger tilgang til objektet som vi skal hekte det nye objektet til. Introduserer en hjelpepeker som «henger ett trinn etter»:

36 Sette personobjekt inn i treet 1 void settinnitre ( Person inn ) { 2 // Objektet inn skal s e t t e s inn i persontreet 3 i f ( persontreet == null ) persontreet = inn ; 4 else { 5 int smnlgn = 347; 6 Person siste, peker = treet ; 7 while ( peker! = null ) { 8 siste = peker; 9 smnlgn = peker.navn.comparetoignorecase ( inn.navn ) ; 10 if ( smnlgn < 0 ) peker = peker.høyre ; 11 else if ( smnlgn > 0 ) peker = peker. venstre ; 12 } 13 if ( smnlgn < 0 ) siste.høyre = inn ; 14 else i f ( smnlgn > 0 ) siste. venstre = inn ; 15 } 16 }

37 Sette personobjekt inn i treet Henrik Andreas Gunnar Elisabeth Helge Christian Gry Darjan Eirik Henrik Jørgen Andreas Susanne Gunnar Nikita Jim Vivi Pål Elisabeth Christian Jørgen Darjan Eirik Jan Torjus Tor Gry Simen Stian Imran Nguyen Helge Philip Siv Imran Jan Jim Jørgen Nikita Nguyen Pål Philip Susanne Vivi Torjus Tor Simen Stian Slik blir treet hvis navnene kommer slik lista over er (fra øverst og nedover) Siv

38 Sette personobjekt inn i treet Andreas Christian Darjan Eirik Elisabeth Slik blir treet hvis person objektene settes inn i alfabetisk rekkefølge. Gry Gunnar Helge Henrik Resten i stigende orden

39 Sette personobjekt inn i treet Sette et personobjekt inn i treet 1 public void settinnitreet ( Person inn ) { 2 if ( rotperson == null ) rotperson = inn ; 3 else settinn ( inn, rotperson ) ; 4 } 5 6 private void settinn ( Person inn, Person tre ) { 7 int smnlgn = tre. sammenlign( inn ) ; 8 if ( smnlgn < 0 ) { 9 if ( tre. høyre == null ) tre.høyre = inn ; 10 else settinn ( inn, tre.høyre ) ; 11 } 12 else if ( smnlgn > 0 ) { 13 if ( tre. foran == null ) tre. venstre = inn ; 14 else settinn ( inn, tre. venstre ) ; 15 } 16 }

40 Finne et personobjekt med et gitt navn Finne et personobjekt med et gitt navn blir nokså likt det å sette inn en person. Metoden skal returnere med en peker til et personobjekt i treet som har likt navn med innparameteren. Her lar vi treet vi skal lete i også være innparameter. Når vi skal lete i hele treet, bruker vi kallet finnitre(persontreet, navnet).

41 Finne et personobjekt med et gitt navn 1 Person finnitre ( Person persontre, String navn) { 2 Person funnetperson = null ; 3 Person pp = persontre; int smnlgn = 5621; 4 while ( pp! = null ) { 5 smnlgn = pp.navn.comparetoignorecase (navn ) ; 6 if ( smnlgn == 0 ) { // funnet 7 funnetperson = pp; 8 pp = null ; // for å avslutte whileløkka 9 } 10 else if ( smnlgn < 0 ) pp = pp.høyre ; 11 else if ( smnlgn > 0 ) pp = pp. venstre ; 12 } 13 return funnetperson ; 14 }

42 Programmeringsoppgaver til plenumsøvelsen Programmeringsoppgaver 1. Lag en enklere og bedre settinnpersonetterrang basert på opplysningene om de tre tilfellene vi kan dele problemet i. 2. Lag et program som tester innsettingsmetodene i et binært tre. Rett evt. feil. 3. Forandre programmet over, slik at innsettingsmetoden ligger i personobjektene (defineres i klassen Person). 4. Skriv om finnitre slik at den benytter kall på seg selv istedet for while-løkke. 5. Anta at et personobjekt har en metode skrivperson som skriver ut opplysninger om dette objektet. Lag en metode skrivalle som kaller på denne metoden i samtlige objekter i treet. 6.

Finne et personobjekt med et gitt navn. Sette personobjekt inn i treet

Finne et personobjekt med et gitt navn. Sette personobjekt inn i treet INF1010 e-ostadresser Ikke-faglige sørsmål til studieinfo@ifi.uio.no. Faglige sørsmål til blogen eller til @ifi.uio.no: brukernavn navn kristoeb Kristoffer Egil Bonarjee josek Jose Louis Rojas

Detaljer

Vanlige datastrukturer. I dette lysarksettet

Vanlige datastrukturer. I dette lysarksettet Vanlige datastrukturer I dette lysarksettet datastrukturer Datastrukturer i Med datastruktur mener vi måten objektene i et program er strukturert på. Særlig blir det aktuelt å snakke om struktur hvis vi

Detaljer

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene.

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene. Om pensum Dagens forelesning handler om (de to datastrukturene) lister og binære trær. Etter forelesningen skal studentene kjenne til datastrukturene lister og binære trær og kunne lage programmer som

Detaljer

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet Innhold i dette lysarksettet Dagens forelesning INF1010 Innhold i dette lysarksettet Hvordan jobbe med INF1010 Datastrukturer Algoritmer og datastrukturer Grafer (lister og trær) Objektorientert programmering

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

Lenkelister. Lister og køer.

Lenkelister. Lister og køer. Lenkelister. Lister og køer. INF1010 Stein Michael Storleer 27. januar 2011 Dagens forelesning Lenkede lister Lenkede lister Eksempel på en lenket liste: personliste Operasjoner på lenkede lister (enkeltlenket)

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

Studieaktiviteter i INF1010

Studieaktiviteter i INF1010 Innhold i dette lysarksettet Dagens forelesning INF1010 Innhold i dette lysarksettet Hvordan jobbe med INF1010 Datastrukturer Algoritmer og datastrukturer Grafer (lister og trær) Objektorientert programmering

Detaljer

Velkommen til INF1010

Velkommen til INF1010 Velkommen til INF1010 Dagens forelesning Hvordan jobbe med INF1010 Pensum Datastrukturer Grafer (lister og trær) Objektorientert programmering Lister og køer Hva er en liste? FIFO- og LIFO-lister Lenkede

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

INF1010 siste begreper før oblig 2

INF1010 siste begreper før oblig 2 INF1010 siste begreper før oblig 2 Sammenligning. Mer lenkede lister. Forskjellige listeimplementasjoner. Binære trær. Bittelitt om grensesnitt (interface). Dagens forelesning Flere temaer på grunn av

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

Versjon (vil bli endret).

Versjon (vil bli endret). Versjon 24.01.2012 (vil bli endret). Dette dokumentet bør leses før forelesningen 26. januar 2012 og er en del av «pensum». De er også laget med tanke på repetisjon. (Lysarkene som blir brukt egner seg

Detaljer

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2 Velkommen til INF1010 Studieaktiviteter i INF1010 Programmering (oppgaveløsning) alene/kollokvier programmeringslab (plenums)øvelser forelesninger gruppe som repeterer stoff fra forelesning, og øvelser

Detaljer

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre INF1010 Rekursive metoder, binære søketrær Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre public void skrivutmeg ( ) { System. out. println (navn + " er venn med " + minbestevennheter

Detaljer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

INF1010 Binære søketrær ++

INF1010 Binære søketrær ++ INF1010 Binære søketrær ++ Programeksempler med insetting, gjenfinning av noder i et binært søketre samt eksempler på hvordan lage en liste av et binærtre. Hva må du kunne om binære søketrær i INF1010

Detaljer

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. "Taher" type: String : type: :... type: : inf1010student null michael@ifi.uio.no INF1010 26. januar 2012 (uke 4) 2 class Eks01 { public

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

Dagens tema INF1010 INF1010 INF1010 INF1010

Dagens tema INF1010 INF1010 INF1010 INF1010 I eksemplene om lister og binære trær har vi hittil hatt pekerne inne i objektene i strukturen. ( Innbakt struktur ).Eksempel: Dagens tema Implementasjon av strukturer (lister, binære trær) class { ; ;

Detaljer

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær: TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 6. juni 2013 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

Detaljer

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

behrozm Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009 Rekursiv programmering BTeksempel Datastruktur I klassen Persontre (rotperson==) Rekursjon Noen oppgaver/problemer er rekursive «av natur» Eksempel på en rekursiv definisjon Fakultetsfunksjonen

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

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel ) INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde (ragnhilk@ifi.uio.no)

Detaljer

INF2220: Forelesning 2

INF2220: Forelesning 2 INF2220: Forelesning 2 Mer om analyse av algoritmer Analyse av binære søketrær Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) ANALYSE AV ALGORITMER 2 Analyse av tidsforbruk Hvor

Detaljer

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen Eksamen - Algoritmer og datastrukturer - Høgskolen i Oslo og Akershus - 27.11.2012 Side 1 av 6 Algoritmer og datastrukturer Eksamen 27.11.2012 Eksamensoppgaver Råd og tips: Bruk ikke for lang tid på et

Detaljer

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

Løsnings forslag i java In115, Våren 1996 Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra

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

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

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen Binære søketrær En ordnet datastruktur med raske oppslag Sigmund Hansen Lister og trær Rekke (array): 1 2 3 4 Lenket liste (dobbelt-lenket): 1 2 3 4 Binært søketre: 3 1 4 2 Binære

Detaljer

EKSAMEN med løsningsforslag

EKSAMEN med løsningsforslag EKSAMEN med løsningsforslag Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer:

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

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

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

Algoritmer og datastrukturer Eksamen 22. februar 2011

Algoritmer og datastrukturer Eksamen 22. februar 2011 Side 1 av 5 Algoritmer og datastrukturer Eksamen 22. februar 2011 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator som ikke kommuniserer. Faglærer: Ulf Uttersrud Råd og

Detaljer

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

INF januar 2015 Stein Michael Storleer (michael) Lenkelister INF1010 29. januar 2015 Stein Michael Storleer (michael) Lenkelister Lenke + lister = lenkelister Vi starter med lenkeobjektene Lager en kjede av objekter ved hjelp av pekere class { ; Legger Jl data innholdet

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

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) REPETISJON: BINÆRE SØKETRÆR 2 Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre

Detaljer

INF2220: Forelesning 2

INF2220: Forelesning 2 INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) REPETISJON: BINÆRE SØKETRÆR 2 Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre

Detaljer

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

Detaljer

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær Dagens tema INF2220 - Algoritmer og datastrukturer HØSTEN 2007 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 2: Binærtrær og abstrakte datatyper (ADT) Kort repetisjon Generelle trær

Detaljer

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

Løsnings forslag i java In115, Våren 1998 Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Lørdag 15. desember 2001, kl. 09.00-14.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler.

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

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene. Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven

Detaljer

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller. Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter

Detaljer

Algoritmer og datastrukturer Løsningsforslag

Algoritmer og datastrukturer Løsningsforslag Algoritmer og datastrukturer ved Høgskolen i OsloSide 1 av 6 Algoritmer og datastrukturer Løsningsforslag Eksamen 24. februar 2010 Oppgave 1A 1. Komparatoren sammenligner først lengdene til de to strengene.

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

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

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

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf: INF100 Algoritmer og datastrukturer INF100 Algoritmer og datastrukturer Oppgave 1 LØSNINGSFORSLAG Betrakt følgende vektede, urettede graf: V 1 V Eksamen i INF100 1. desember 004 V V 4 V 4 V V Ragnar Normann

Detaljer

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave 1 INF1020 h2005 Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte

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

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for

Detaljer

Seminaroppgaver IN1010, uke 2

Seminaroppgaver IN1010, uke 2 Seminaroppgaver IN1010, uke 2 1.a: Skriv en klasse HeiVerden.java. Klassen skal inneholde en main- metode (se på notatet fra tidligere). Inne i main -metoden skal programmet først la brukeren oppgi en

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 LØSNINGSFORSLAG 1 Del 1 60% Oppgave 1.1-10% Forklar kort

Detaljer

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)! Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre

Detaljer

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes til å løse problemer. Undersøke ulike implementasjoner

Detaljer

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi Høgskolen i Østfold Avdeling for informasjonsteknologi Løsningsforslag til ny/utsatt eksamen i ITF20006 Algoritmer og datastrukturer 05.01.2018 Oppgave 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Detaljer

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

EKSAMEN Løsningsforslag. med forbehold om bugs :-) 1 EKSAMEN Løsningsforslag med forbehold om bugs :-) Emnekode: ITF20006 000 Dato: 20. mai 2011 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater

Detaljer

INF1010. Stein Michael Storleer (michael) Lenkelister

INF1010. Stein Michael Storleer (michael) Lenkelister INF1010 Stein Michael Storleer (michael) Lenkelister Lenke Datastrukturen lenkeliste class { = null ; foran foran = new () ; class { = null ; foran foran = new () ; foran. = new () ; class { = null ; foran

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 15. desember 2010 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: INF2220

Detaljer

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier 11. okt. 2011 Siri Moe Jensen Inst. for informatikk, UiO 1 Innhold Eksamen INF1000 Høst 2011: Oppgave 4-7 Tekstmanipulering Metoder med og uten

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF 110 Algoritmer og datastrukturer Eksamensdag : Lørdag 8. desember 2001 Tid for eksamen : 09.00-15.00 Oppgavesettet er på

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1020 Algoritmer og datastrukturer Eksamensdag: 15. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 6 sider.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 10. juni 2009 Tid for eksamen: 9.00 12.00 Oppgavesettet

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

Eksempel: Uttrykkstrær I uttrykkstrær inneholder bladnodene operander (konstanter, variable,... ), mens de interne nodene inneholder operatorer.

Eksempel: Uttrykkstrær I uttrykkstrær inneholder bladnodene operander (konstanter, variable,... ), mens de interne nodene inneholder operatorer. TRÆR Generelle trær Dagens plan: Kort repetisjon Generelle trær Binærtrær Implementasjon Traversering Binære søketrær Definisjon Søking, innsetting og sletting Gjennomsnitts-analyse (!) Eksempel: Ibsens

Detaljer

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved Dagens plan: Utvidbar hashing (kapittel 5.6) B-trær (kap. 4.7) Abstrakte datatyper (kap. 3.1) Stakker (kap. 3.3) Når internminnet blir for lite En lese-/skriveoperasjon på en harddisk (aksesstid 7-12 millisekunder)

Detaljer

EKSAMEN. Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer: Gunnar Misund

Detaljer

INF2220: Forelesning 1

INF2220: Forelesning 1 INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) Praktisk informasjon 2 Praktisk informasjon Kursansvarlige Ingrid Chieh Yu de Vibe (ingridcy@ifi.uio.no)

Detaljer

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen Eksamensoppgave i Algoritmer og datastrukturer ved Høgskolen i Oslo Side 1 av 5 Algoritmer og datastrukturer Eksamen 30.11.2010 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator

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

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato: 09.12.

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato: 09.12. G høgskolen i oslo Emne: Algoritmer og datastrukturer Emnekode: 80131A Faglig veileder: UlfUttersrud Gruppe(r) : Dato: 09.12.2004 Eksamenstid: 9-14 Eksamensoppgaven består av: Tillatte hjelpemidler Antall

Detaljer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; } Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 Delkapittel 9.1 Generelt om balanserte trær Side 1 av 13 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 9.1 Generelt om balanserte trær 9.1.1 Hva er et balansert tre? Begrepene balansert og

Detaljer

Generelle trær BINÆRTRÆR. Binærtrær

Generelle trær BINÆRTRÆR. Binærtrær BINÆRTRÆR Kort repetisjon Generelle trær Binærtrær Implementasjon Traversering Binære søketrær Definisjon Søking, innsetting og sletting Gjennomsnitts-analyse Eksempel: Ibsens skuespill Generelle trær

Detaljer

INF2220: Forelesning 1

INF2220: Forelesning 1 INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) Rekursjon (kapittel 1.3) (Binær)trær (kapittel 4.1-4.3 + 4.6) Praktisk informasjon 2 Praktisk informasjon Kursansvarlige Ingrid

Detaljer

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

Detaljer

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID: Høgskolen i Gjøvik Avdeling for Teknologi E K S A M E N FAGNAVN: FAGNUMMER: Algoritmiske metoder I L 189 A EKSAMENSDATO: 11. desember 2001 KLASSE: 00HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID: 09.00-14.00

Detaljer

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

INF1010 - Objektorientert programmering. Datastrukturer i Java Klasser med parametre

INF1010 - Objektorientert programmering. Datastrukturer i Java Klasser med parametre INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere Andreas Færøvig Olsen (andrefol)

Detaljer

Løsningsforslag til INF110 h2001

Løsningsforslag til INF110 h2001 Løsningsforslag til INF110 h2001 Eksamen i : INF 110 Algoritmer og datastrukturer Eksamensdag : Lørdag 8. desember 2001 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 5 sider inkludert vedlegget Vedlegg

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

Algoritmer og datastrukturer Løsningsforslag

Algoritmer og datastrukturer Løsningsforslag 1 Algoritmer og datastrukturer Løsningsforslag Eksamen 29. november 2011 Oppgave 1A Verdien til variabelen m blir lik posisjonen til den «minste»verdien i tabellen, dvs. bokstaven A, og det blir 6. Oppgave

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

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster 3 emner i dag! INF1000 Uke 5 Litt om objekter, pekere og null Filer og easyio Litt mer om tekster Litt om objekter, filer med easyio, tekst 1 2 Objekter og pekere Vi lager pekere og objekter når vi bruker

Detaljer

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema va er en algoritme? Vanlig sammenligning: Oppskrift. nput lgoritme NF1020 - ØSTEN 2006 Kursansvarlige Ragnar Normann E-post: ragnarn@ifi.uio.no Output Knuth : tillegg til å være et endelig sett med regler

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 13. desember 2011 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 7 sider. Vedlegg: INF2220 lgoritmer og datastrukturer

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

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

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere Andreas Færøvig Olsen (andrefol)

Detaljer

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb Lenkelister, iteratorer, indre klasser Repetisjonskurs våren 2018 kristijb Lenket liste av objekter Vi lager en lenke ved at objekter refererer til hverandre. Vanlige er ofte å ha Node-objekter som har

Detaljer

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) HashMap, innstikksortering, javadoc (kap. 9.1-9.11, m.m. i "Rett på Java" 3. utg.) NB! Legg merke til at disse er løsningsforslag. Løsningene

Detaljer