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

Størrelse: px
Begynne med side:

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

Transkript

1 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 { rot; public void settinn( btn) { public void skrivut() { Rekursjon: Binærsøk class BinærTreEksmpl{... main()... Sortering Innstikksortering Rekursjon: Quicksort Dette er et sett lysark for en forelesning. Mange sider er ukommentert og ufullstendige. Mange spørsmål er ubesvarte og det kan forekomme feil. Settet er tildels uegnet til selvstudium uten notater fra forelesningen. foran etter Et objekt av klassen Person "Susanna" Stein Michael Storleer 24. april 2007 Ark 1 av 32 Stein Michael Storleer 24. april 2007 Ark 2 av 32 Klassestruktur med mer detaljer abstract class { foran, etter; abstract int sammenlign( btn); void settinnherellerunder( inn){ void skrivutrekursivt() { Gunnar null Nikita null class Person extends { ; int sammenlign( btn){ class Binærtre { rot; public void settinn( btn) { public void skrivut() { class BinærTreEksmpl{ public static void main( [] args ) { Binærtre tre = new Binærtre(); <sett inn personer og skriv ut> Jørgen rot settinn( btn) skrivut() Henrik main() Binærtre tre Et objekt av klassen BinærTreSubkl Susanne Binærtreet som har 5 objekter er her tegnet oppover. I programmerings skisser tegner vi vanligvis (binære) trær nedover. Et datastrukturdiagram etter at personen med = "Nikita" er satt inn. Stein Michael Storleer 24. april 2007 Ark 3 av 32 Stein Michael Storleer 24. april 2007 Ark 4 av 32

2 class Binærtre og class BinærTreEksmpl class Binærtre { rot; public void settinn( btn) { if (rot == null) rot = btn; else rot.settinnherellerunder(btn); public void skrivut() {rot.skrivutrekursivt(); class BinærTreEksmpl{ public static void main( [] args ) { Binærtre tre = new Binærtre(); tre.settinn(new Person("Henrik"));... tre.skrivut(); Metoden sammenlign() for å rangere to personer alfabetisk abstract class { foran, etter; abstract int sammenlign( btn); class Person extends { ; Person( s){ = s; int sammenlign( btn){ return.comparetoignorecase(((person)btn).); Legg merke til hvordan sammenligningsmetoden (Den innebygde heter CompareTo) er programmert. Ved å lage den selv bestemmer vi hvordan den virker, forutsatt at vi kjenner metoden comparetoignorecase i klassen. Stein Michael Storleer 24. april 2007 Ark 5 av 32 Stein Michael Storleer 24. april 2007 Ark 6 av 32 I : metoden skrivutrekursivt (infix) void skrivutrekursivt() { if (foran!= null) foran.skrivutrekursivt(); //a System.out.println(((Person)this).); //b if (etter!= null) etter.skrivutrekursivt(); //c Rekkefølge: prefix void skrivutrekursivt() { System.out.println(((Person)this).); //b if (foran!= null) foran.skrivutrekursivt(); //a if (etter!= null) etter.skrivutrekursivt(); //c Rekkefølge: postfix void skrivutrekursivt() { if (foran!= null) foran.skrivutrekursivt(); //a if (etter!= null) etter.skrivutrekursivt(); //c System.out.println(((Person)this).); //b I : metoden settinnherellerunder void settinnherellerunder( inn){ int smnlgn = sammenlign(inn); if ( smnlgn < 0 ) { if (etter == null) etter = inn; else etter.settinnherellerunder(inn); else if ( smnlgn > 0 ) { if (foran == null) foran = inn; else foran.settinnherellerunder(inn); Metoden utføres inne i et objekt. Attributtene referer til dette objektets pekervariable og metoder. Merk at treet vi setter inn i ikke er parameter, men at vi har adgang til pekerne i objektet. Sjekk rekursjonskriteriene. Stein Michael Storleer 24. april 2007 Ark 7 av 32 Stein Michael Storleer 24. april 2007 Ark 8 av 32

3 Person interface TreElement Abstraksjon: grensesnitt Klassestruktur som gjør at vi kan sette objekter av forskjellige klasser inn i samme tre så lenge de implementerer det tilhørende grenesenitt som gjør at de spiller rollen treelement: Barn Voksen Pattedyr Menneske By Grensesnittet har bare metoder som kan manipulere (lese og sette) pekerne til TreElement. Pekerne og metodene må implementeres i klassene som bruker (implements) TreElement. interface TreElement { TreElement hentteforan(); TreElement hentteetter(); void settteforan(treelement te); void settteetter(treelement te); class Person{... class Barn extends Person implements TreElement { TreElement foran, etter; TreElement hentteforan(); TreElement hentteetter(); void settteforan(treelement te); void settteetter(treelement te); Klassediagram av programskissen på forrige ark. Datastrukturdiagram TreElement rot Objekter av klasser (og deres sub klasser) som implementerer grense snittet TreElement kan inngå i samme binærtrestruktur. Disse objektene kan pekes på av variable av typen TreElement. class Voksen extends Person implements TreElement {... class Pattedyr implements TreElement {... class Menneske extends Pattedyr {... class By implements TreElement { Stein Michael Storleer 24. april 2007 Ark 9 av 32 Stein Michael Storleer 24. april 2007 Ark 10 av 32 Hanois tårn Tårnet i Hanoi eller Hanois tårn Legenden Hindutempel med 3 påler, 64 gullplater med hull i midten Når alle 64 plater er flyttet til en annen påle vil templet og verden gå under Illustrasjonen er hentet fra Spilleregler Bare en plate kan flyttes om gangen Minst enkeltflyttinger Edouard Lucas 1883 Spillet Platen som flyttes må flyttes til en av de andre pinnene Det finnes flere algoritmer En plate kan ikke legges over en mindre plate Stein Michael Storleer 24. april 2007 Ark 11 av 32 Stein Michael Storleer 24. april 2007 Ark 12 av 32

4 I kvasijavakode: Algoritmer som løser Hanois tårn med n plater Ikke rekursiv algoritme Definerer en positiv retning: while (!ferdig ) { 1. Flytt den minste platen en pinne i postiv retning 2. Hvis mulig, gjør det lovlige trekket mellom de to andre pinnene (ikke pinnen med den minste platen) Hvis trekk 2 ikke var mulig { ferdig = true P1 P2 P3 P1 hvis antall plater er et ulikt tall P1 P3 P2 P1 hvis antall plater er et partall Algoritme: Gå i løkke: 1. Flytt den minste platen en pinne i postiv retning 2. Gjør det eneste andre trekket som ikke involverer den minste platen Avslutt løkka hvis 2 ikke var mulig, hvis 2 kunne gjøres, fortsett slutt Det er lett å lage en datamodell og et javprogram som utfører algoritmen. Det er vanskelig å skjønne at dette programmet løser Hanois tårn med n plater. (Beviset for det går langt utover det vi skal lære i. Interesserte kan finne bevis på nettet, f.eks. andy/courses/3101/lecture notes/ln0.html) Stein Michael Storleer 24. april 2007 Ark 13 av 32 Stein Michael Storleer 24. april 2007 Ark 14 av 32 Rekursiv algoritme Først skriver vi et program som løser det legendariske problemet med 64 plater. Istedet for en rekursiv metode lager vi først 64 metoder som kan kalle hverandre. (Nesten rekursjon). Programmeringside Lage en metode som kan flytte 64 plater ved hjelp av to andre metoder ❶ en metode som kan flytte en plate ❷ en metode som kan flytte 63 plater: Hvis flytt63 gjør det den skal vil dette virke. Vi må da programmere flytt63, og gjør det over samme lest: public static void flytt63 (int fra, int til, int via) { flytt62(fra, via, til); flytt62(via, til, fra); public static void flytt64 (int fra, int til, int via) { flytt63(fra, via, til); flytt63(via, til, fra); Vi skjønner mønsteret (vi trenger flytt62, flytt61,..., flytt2 også) og hvis vi behersker en teksteditor godt, bruker vi ikke lang tid på å lage programmet: public static void flytt1(int fra, int til, int via) { System.out.println( Flytter en plate fra: + fra + til: + til); public static void flytt63 (int fra, int til, int via) {... Stein Michael Storleer 24. april 2007 Ark 15 av 32 Stein Michael Storleer 24. april 2007 Ark 16 av 32

5 public static void flytt64 (int fra, int til, int via) { flytt63(fra, via, til); flytt63(via, til, fra); public static void flytt63 (int fra, int til, int via) { flytt62(fra, via, til); flytt62(via, til, fra); // 60 metoder utelatt (flytt62...tilogmed... flytt3)) public static void flytt2 (int fra, int til, int via) { flytt1(fra, via, til); flytt1(via, til, fra); public static void flytt1(int fra, int til, int via) { System.out.println( Flytter en plate fra: + fra + til: + til); top down programutvikling Denne måten å utvikle programmet på (vi bruker metoder vi ikke har programmert ennå) kalles top down, siden vi begynner i den komplekse enden (løser problemet for 64 plater og antar vi har metoder som løser de enklere oppgavene før vi har laget dem). lag først en metode som kan flytte 64 plater (vha flytt63) så en som kan flytte 63 ved hjelp av den som kan flytte 62 så en som kan flytte så en som kan flytte 2 ved hjelp av en som kan flytte 1 tilslutt den som flytter 1 plate Stein Michael Storleer 24. april 2007 Ark 17 av 32 Stein Michael Storleer 24. april 2007 Ark 18 av 32 bottom up programutvikling Vi kan også tenke omvendt. Den utviklingsmetoden kalles bottom up: lag først en metode som kan flytte 1 plate ved hjelp av den lager vi metoden som kan flytte 2 så en som kan flytte 3 ved hjelp av mtoden som flytter 2... så en som kan flytte 63 ved hjelp av den som kan flytte 62 tilslutt en som kan flytte 64 Mens vi har laget 64 nesten like metoder, har vi fått ideen om å la antall plater som skal flyttes være en parameter til metoden, la oss kalle antallet n, og de tre pinnene henholdsvis frapinnen, tilpinnen og viapinnen: ❶ flytt n 1 plater fra frapinnen til viapinnen ❷ flytt 1 plate fra frapinnen til tilpinnen ❸ flytt n 1 plater fra viapinnen til tilpinnen Hvis algoritmen klarer å flytte n 1 plater riktig, skulle dette fungere for n plater (vi har programmert slik). Vi sørger så for at metoden virker for n = 1 (basistilfellet) og metoden vil være korrekt (ved induksjon). Programmet blir det samme uansett utviklingsmetode. Vi skriver algoritmen i java: Stein Michael Storleer 24. april 2007 Ark 19 av 32 Stein Michael Storleer 24. april 2007 Ark 20 av 32

6 Rekursiv metode Søking I programeksemplene bruker vi en array som kanskje inneholder en verdi som vi søker. public static void flytt(int ant, int fra, int til, int via) { if (ant == 0) { else { flytt(ant 1, fra, via, til); flytt1(fra, til); flytt(ant 1, via, til, fra); public static void flytt1(int fra, int til) { antallflytt++; System.out.println( Flytter en plate fra pinne + fra + til pinne + til); Hva er basistilfellet og er de rekursive kallene nærmere dette? Hvordan representerer vi pinner og plater i programmet (datamodellen)? Lineær søking For å lete etter et element i en usortert array: int linearsok(int[] a, int elem) { boolean funnet = false; int indeks = 0; while (indeks < a.length &&!funnet) { if (a[indeks] == elem) { funnet = true; else { indeks++; if (funnet) { return indeks; else { return -1; Stein Michael Storleer 24. april 2007 Ark 21 av 32 Stein Michael Storleer 24. april 2007 Ark 22 av 32 Binærsøk For å lete etter et element i en sortert array: Sortering Forutsetter at vi kan rangere elementene: Gitt to elementer: Programmet må kunne teste om det ene elementet er lik, mindre enn eller større enn det andre. int binarsok(int[] a, int fra, int til, int elem) { int midten; if (fra > til) { return -1; else { midten = (fra + til) / 2; if (elem == a[midten]) { return midten; else if (elem < a[midten]) { return binarsok(a, fra, midten-1, elem); else { // elem > a[midten] return binarsok(a, midten+1, til, elem); Innstikksortering Generell idé: Plukk ett og ett element fra listen og sett det inn på rett plass (sortert) i en ny liste. Dette kan gjøre i en array: ❶ Finn første element fra venstre som er mindre enn det til venstre for seg ta dette ut. ❷ Elementene til venstre for dette skyves mot høyre inntil det uttatte elementet passer inn. ❸ Gjenta 1 2 inntil det siste elementet (helt til høyre) er behandlet. Stein Michael Storleer 24. april 2007 Ark 23 av 32 Stein Michael Storleer 24. april 2007 Ark 24 av 32

7 Quicksort void innstikksortering(char[] a) { for (int k = 0; k < a.length - 1; k++) { if (a[k + 1] < a[k]) { // a[k + 1] står på feil plass char tmp = a[k + 1]; int i = k; while (i >= 0 && a[i] > tmp) { // a[i] > tmp, flytt til høyre a[i + 1] = a[i]; i--; a[i+1] = tmp; // sett tmp på rett plass Programmeringside, programskisse 1a) Del arrayen i to deler, slik at alle elementer i den ene delen er mindre enn alle elementer i den andre delen. 1b) Velg en verdi som finnes i arrayen og bytt to og to elementer ved å starte fra de to endene slik at den ene delen inneholder verdiene som er mindre enn den valgte verdien, den andre delen inneholder verdiene som er større. 2) Vi har da tre deler, først en del med elementer mindre enn eller lik den valgte verdi, så ett element med den valgte verdi, til slutt en del med elementer større enn eller lik den valgte verdi. 3) Sorter de to delene rekursivt (ved å starte fra 1). Hvis de to delene blir riktig sortert, vil da hele arrayen være sortert. Stein Michael Storleer 24. april 2007 Ark 25 av 32 Ved å søge for at begge delarrayer er kortere enn den vi har er vi sikret at de rekursive kallene går mot basistilfellet. Basistilfellet er en array av lengde 1 eller 0, da trenger vi ikke sortere og det blir ingen rekursive kall. Stein Michael Storleer 24. april 2007 Ark 26 av 32 Forfining av programskissen for quicksort ❶ Hvis antall elementer som skal sorteres er 0 eller 1, returner. ❷ Plukk et ( middels stort ) element fra mengden som skal sorteres. Dette kalles pivot elementet. ❸ Del resten av elementene i to: De som er mindre enn pivot elementet. Hvilken sorteringsagoritme bør vi velge? For små arrayer med N 20 er quicksort mindre effektiv enn innstikksortering. På grunn av de rekursive kallene vil dette være et vanlig tilfelle! De som er større enn pivot elementet. ❹ Sorter disse delmengdene hver for seg (ved hjelp av quicksort). ❺ Returner sorteringen av de små elementene, etterfulgt av pivot elementet, etterfulgt av sorteringen av de store elementene. Løsning: Bruk en avskjæring mellom 5 og 20 (vanligvis 10) slik at arraysegmenter mindre enn dette sorteres ved hjelp av innstikksortering. Stein Michael Storleer 24. april 2007 Ark 27 av 32 Stein Michael Storleer 24. april 2007 Ark 28 av 32

8 Partisjoneringsstrategi Dette blir lett feil hvis man ikke er nøyaktig! ❶ Få pivot elementet vekk ved å bytte det med det siste elementet. Hvordan velge pivot elementet? Ideelt: Et pivot element som deler mengden i to like store halvdeler. ❷ La i starte på det første elementet, og j på det nest siste. ❸ Så lenge i er til venstre for j: 1 Flytt i mot høyre så lenge elementet i peker på er mindre enn pivot elementet. 2 Flytt j mot venstre så lenge a[j] er større enn pivot elementet. 3 i peker nå på et stort element og j på et lite. Hvis i er til venstre for j, byttes disse elementene. I praksis: Velger pivot elementet så tilfeldig som mulig. Vi skal bruke midten av tre partisjonering: Se på det første, midterste og siste elementet. Velg det mellomste av disse som pivot. Implementasjonen vil også sortere disse tre elementene, samt skjule pivot elementet. ❹ Bytt pivot elementet med elementet i posisjon i. Stein Michael Storleer 24. april 2007 Ark 29 av 32 Stein Michael Storleer 24. april 2007 Ark 30 av 32 Implementasjon Midten av tre char midtenavtre(char[] a, int fra, int til) { int midten = (fra + til) / 2; if (a[midten] < a[fra]) { bytt(a, fra, midten); if (a[til] < a[fra]) { bytt(a, fra, til); if (a[til] < a[midten]) { bytt(a, midten, til); // Skjul pivot-elementet nest lengst til høyre bytt(a, midten, til-1); return a[til-1]; Hovedmetoden i quicksort void quicksort(char[] a, int fra, int til) { if (til - fra <= 1) { // Et array-segment på 0 eller 1 element er sortert if (til - fra == 1) { // 2 elementer: a[fra og a[til] if (a[fra] > a[til]) bytt(a, fra, til); return; int pivotindeks; char pivot = midtenavtre(a, fra, til); int i = fra; int j = til-1; while (true) { while (a[++i] < pivot) { while (a[--j] > pivot) { if (i < j) { bytt(a, i, j); else { break; pivotindeks = i; bytt(a, pivotindeks, til-1); quicksort(a, fra, pivotindeks-1); quicksort(a, pivotindeks+1, til); Stein Michael Storleer 24. april 2007 Ark 31 av 32 Stein Michael Storleer 24. april 2007 Ark 32 av 32

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

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

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

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

Rekursjon. Hanois tårn. Milepeler for å løse problemet

Rekursjon. Hanois tårn. Milepeler for å løse problemet Rekursjon. Hanois tårn. Milepeler for å løse problemet Hanois tårn. Milepeler for å løse problemet Forstå spillet Bestemme/skjønne hvordan spillet løses Lage en plan for hva programmet skal gjøre (med

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

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

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

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

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

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

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

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

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

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 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

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

"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

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

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

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

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

INF1010. Sekvensgenerering Alle mulige sekvenser av lengde tre av tallene 0, 1 og 2: Sekvensgenerering. Generalisering. n n n! INF1010 INF1010 INF1010

INF1010. Sekvensgenerering Alle mulige sekvenser av lengde tre av tallene 0, 1 og 2: Sekvensgenerering. Generalisering. n n n! INF1010 INF1010 INF1010 Sekvensgenerering Alle mulige sekvenser av lengde tre av tallene, og : Kombinatorisk søking Generering av permutasjoner Lett: Sekvensgenerering Vanskelig: Alle tallene må være forskjellige Eksempel: Finne

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

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

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering

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

Sortering med tråder - Quicksort

Sortering med tråder - Quicksort Sortering med tråder - Quicksort Skisser til to programmer INF1010 våren 2016 Stein Gjessing Institutt for informatikk Universitetet i Oslo Sortering som tema, slikt som valg av sorteringsmetode, hastigheten

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

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

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

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 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

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

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

INF1010. Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: Introduksjon til Rekursiv programmering

INF1010. Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: Introduksjon til Rekursiv programmering Introduksjon til Rekursiv programmering To iterate is human; to recurse, divine. L. Peter Deutsch, Robert Heller Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: rekursjon

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

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr Fakultet Bredde Rekursjon Fibonacci Sjakk Hanois tårn Lister Oppsummering Rekursjon (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. n! = n x n-1 x n-2 x... x 2 x 1 Å beregne fakultet

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

Kapittel 8: Sortering og søking

Kapittel 8: Sortering og søking Kapittel 8: Sortering og søking Forelesningsnotater for: Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk, 2003. ISBN 82-02-23274-0 http://www.ii.uib.no/~khalid/jfps/

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00

Detaljer

INF1010 e-postadresser

INF1010 e-postadresser INF1010 e-postadresser Ikke-faglige spørsmål til studieinfo@ifi.uio.no. Faglige spørsmål til blogen eller til @ifi.uio.no: brukernavn kristoeb josek stianf bendiko bmmender espeak richar daghf

Detaljer

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr Fakultet Rekursjon Fibonacci Sjakk Hanois tårn Lister Oppsummering Rekursjon (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. n! = n x n-1 x n-2 x... x 2 x 1 Å beregne fakultet Den

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.

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

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO 1 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 115 Eksamensdag : Lørdag 20 mai, 2000 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 5 sider Vedlegg : Intet. Tillatte

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

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

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

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

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

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

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

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

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

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

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

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

Kapittel 12: Rekursjon

Kapittel 12: Rekursjon Kapittel 12: Rekursjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,

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

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

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

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

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

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

Hvor raskt klarer vi å sortere?

Hvor raskt klarer vi å sortere? Sortering 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

Detaljer

Kapittel 8: Sortering og søking INF100

Kapittel 8: Sortering og søking INF100 Forelesningsnotater for: Kapittel 8: Sortering og søking INF100 Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk, 2003. ISBN 82-02-23274-0 http://www.ii.uib.no/~khalid/jfps/

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

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

Rekursjon som programmeringsteknikk

Rekursjon som programmeringsteknikk Rekursjon Kap.7 Sist oppdatert 15.02.10 Rekursjon som programmeringsteknikk 10-1 Rekursiv tenkning Rekursjon er en programmeringsteknikk der en metode kan kalle seg selv for å løse problemet. En rekursiv

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

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

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

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

Kapittel 8: Sortering og søking INF100

Kapittel 8: Sortering og søking INF100 Forelesningsnotater for: Kapittel 8: Sortering og søking INF100 Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk, 2003. ISBN 82-02-23274-0 http://www.ii.uib.no/~khalid/jfps/

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

Algoritmer og datastrukturer Løsningsforslag

Algoritmer og datastrukturer Løsningsforslag Algoritmer og datastrukturer Løsningsforslag Eksamen 30. november 2010 Oppgave 1A Et turneringstre for en utslagsturnering med n deltagere blir et komplett binærtre med 2n 1 noder. I vårt tilfelle får

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

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 4. juni 2005 Tid for eksamen: 0900 1500 Oppgavesettet er på 5 sider. Vedlegg: Tillatte hjelpemidler: INF1010 Objektorientert

Detaljer

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

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

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI Oppgave 1 INF1000 Uke 13 Gjennomgang av prøveeksamen fra høsten 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new double[1];

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet PRØVEEKSAMEN i INF1000 23. november 2004 kl. 14.00 17.00 Dine svar skal skrives på disse oppgavearkene, og ikke på separate ark. Dette gjelder

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

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

INF1010 Rekursjon. Marit Nybakken 1. mars 2004

INF1010 Rekursjon. Marit Nybakken 1. mars 2004 INF1010 Rekursjon Marit Nybakken marnybak@ifi.uio.no 1. mars 2004 Å lære rekursjon gjøres ved å prøve å gjøre en masse oppgaver selv til man får en aha-opplevelse. Marit prøver likevel å forklare littegranne.

Detaljer