Oppramstyper, HashMap og Innstikksortering, litt

Like dokumenter
Holde orden på objekter

INF1000-seminar lørd. 3 nov kl

Holde orden på objekter - HashMap

Oppramstyper (enum) - motivasjon

UML-diagrammer av programmene våre. Objekt-diagrammer. Et helt enkelt studentregister med kurs, studenter og registeret

INF Forelesning 10

Oversikt II. Innhold. INF1000 (Uke 12) Oversikt I. Sortering. Lære å lage proff programvare ved å lage. en generell klasse for sortering

Innhold. INF1000 (Uke 12) Sortering og eksamensoppgaver. Oversikt II. Oversikt I. Om sortering. Litt om dokumentasjon av kode. Deler av eksamen H03

Oppramstyper, HashMap og Innstikksortering, litt. 6. oktober 2009, Arne Maus Inst. for informatikk, UiO

Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc. 17. oktober 2013, Arne Maus Inst. for informatikk, UiO

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

INF1000 (Uke 12) Sortering

Brøkregning og likninger med teskje

MED SVARFORSLAG UNIVERSITETET I OSLO

Læringsmål og pensum. Forberdring vha preallokering. Oversikt

INF Forelesning 10. Eksempler på Hashmap Oppramstyper Innstikksortering Javadoc

Terminprøve Matematikk for 1P 1NA høsten 2014

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

Løsningsforslag til Obligatorisk oppgave 2

Temahefte nr. 1. Hvordan du regner med hele tall

Matematikk Øvingsoppgaver i numerikk leksjon 8 Numerisk integrasjon

Faktorisering. 1 Hva er faktorisering? 2 Hvorfor skal vi faktorisere? Per G. Østerlie Senter for IKT i utdanningen 11.

Kapittel 4 Tall og algebra Mer øving

INF1000: Forelesning 11

IN1010 våren januar. Objektorientering i Java

Løsningsforslag til ukeoppgaver i INF3110/4110

Pensumoversikt - kodegenerering. Maskinen det oversettes til. Kodegenerering del 2: tilleggsnotat, INF5110 v2006

x 1, x 2,..., x n. En lineær funksjon i n variable er en funksjon f(x 1, x 2,..., x n ) = a 1 x 1 + a 2 x a n x n,

! " ##$ % 4 2, &/ ( & +, )-. &* &/ ),* 0, 1 1 ( &/ 2& &, & &/ &,, &/" 2 &/ 2 ) *

( & ( &/ 2& , )-. &* &/ ),* 0, &/ 2 ) *

INF1010 våren januar. Objektorientering i Java

IKT-trapp for Lade skole

Matematikk Øvingsoppgaver i numerikk leksjon 9 Numerisk integrasjon

Kapittel 8 TUTORIALS-CASES

Kapittel 4 Kombinatorikk og sannsynlighet. Løsninger til oppgaver i boka. Løsninger til oppgaver i boka

1 Tallregning og algebra

Kom i gang med Tett på Smartbok! Vi veileder deg steg for steg!

Bioberegninger - notat 3: Anvendelser av Newton s metode

Læringsmål og pensum. Funksjoner hittil (1) Oversikt. Læringsmål Anonyme og rekursive funksjoner Funksjoner som inn-argumenter Subfunksjoner

Microsoft PowerPoint MER ENN KULEPUNKTER

Eneboerspillet. Håvard Johnsbråten

... JULEPRØVE 9. trinn...

2-komplements representasjon. Binær addisjon. 2-komplements representasjon (forts.) Dagens temaer

Numerisk derivasjon og integrasjon utledning av feilestimater

Kom i gang med Panorama Smartbok! Vi veileder deg steg for steg!

5: Algebra. Oppgaver Innhold Dato

2 Symboler i matematikken

Kom i gang med Perspektiver Smartbok! Vi veileder deg steg for steg!

INF1000 HashMap. Marit Nybakken 2. november 2003

Snarveien til. MySQL og. Dreamweaver CS5. Oppgaver

Get filmleie. Brukerveiledning

Integrasjon Skoleprosjekt MAT4010

M2, vår 2008 Funksjonslære Integrasjon

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Løsningsforslag til avsluttende eksamen i HUMIT1750 høsten 2003.

Numerisk Integrasjon

Inf1000 (Uke 10) Oppgaveløsning. Hashmap

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

STATISTIKK, KOMBINATORIKK OG SANNSYNLIGHET

UNIVERSITETET I OSLO

Mer øving til kapittel 3

To måter å programmere på. INF1000 : Forelesning 9. Programmering uten objekter. Programmering med objekter: Eksempel på programmering uten objekter

! Dekoder: En av 2 n output linjer er høy, avhengig av verdien på n inputlinjer. ! Positive tall: Som før

Øvingsforelesning 9: Minimale spenntrær. Daniel Solberg

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

Fra fotball til business. Historien om Newbody

Inf1000 (Uke 10) HashMap og ArrayList

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

UNIVERSITETET I OSLO

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

Basisoppgaver til 2P kap. 1 Tall og algebra

Del 2. Alle oppgaver føres inn på eget ark. Vis tydelig hvordan du har kommet frem til svaret. Oppgave 2

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

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

1 Algebra. 1 Skriv disse uttrykkene så enkelt som mulig: a) 2(a + 3) (3 + 3a) b) 2(1 a) + a(2 + a) c) 1 + 2(1 3a) + 5a d) 4a 3ab 2(a 5b) + 3(ab 2b)

Løsningsforslag eksamen in105, høsten 2000

Kapittel 3. Potensregning

... JULEPRØVE

a 5 (2 + 8) d 5 (2 + 8) 4 g b 3 5 (2 + 8) e h 3 ( ) j Begrunn hvorfor du ikke får samme svar på oppgave b og g.

INF1000: Forelesning 10

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

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

MAT 100a - LAB 4. Før vi gjør dette, skal vi for ordens skyld gjennomgå Maple-kommandoene for integrasjon (cf. GswM kap. 12).

Sensorveiledning Oppgaveverksted 4, høst 2013 (basert på eksamen vår 2011)

Sortering med tråder - Quicksort

UNIVERSITETET I OSLO

Løsningsforslag til obligatorisk oppgave i ECON 2130

UNIVERSITETET I OSLO

addisjon av 2 og 3. Vi skriver da i alt: 2+3= og etter at likhetstegnet er skrevet så gir matcad oss svaret.

1 Geometri KATEGORI Vinkelsummen i mangekanter. 1.2 Vinkler i formlike figurer

Numerisk matematikk. Fra Matematikk 3MX (2002) Side

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

Fasit. Grunnbok. Kapittel 2. Bokmål

UNIVERSITETET I OSLO

Oversikt (for deg som ikke er helt sikker på å få A) Inf1000 uke 12 4.nov Sjekkliste forts. variabler, typer og tilordning

DELPRØVE 2 (35 poeng)

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

ALTERNATIV GRUNNBOK BOKMÅL

Transkript:

Enummerering å lge egne opprmstyper Uke 8 - Opprmstyper, HshMp og Innstikksortering, litt jvdoc Brukes til å lge typer som hr et lite ntll verdier, ofte tekst. 6. oktober 2009, Arne Mus Inst. for informtikk, UiO 2 Slik enum kn h metoder, og hver verdi hr et tll ssosiert ved seg. En enum virker omtrent som en klsse-deklrsjon. Holde orden på objekter - HshMp Ofte hr vi flere, mnge objekter v en bestemt klsse - eks. : elever på en skole biler som hr pssert bomringen i Oslo telefonsmtler fr en bestemt person,. Vi hr hittil lært rryer (Elev [] elevene = new Elev[400], Bil [] bomringbiler = new Bil[10000];...) og må d psse på t vi hr nok plss for å finne et bestemt objekt må vi ofte lete gjennom hele rryen Vi skl nå lære en bedre måte å lgre objekter hvor det er viktig å rskt og enkelt finne igjen ett v objektene (som d hr ett bestemt kjennetegn som: Nvnet til eleven, registreringsnummeret til en bil,...) Et slikt lk kjennetegn som skiller kll ett objekt fr lle ndre objekter, kller vi en nøkkel (key) HshMp er svret 4

HshMp = lgre objekter med en søkenøkkel Hvordn vi skl tenke oss en HshMp Brukes til å holde orden på en smling objekter Alterntiv til rryer Med rryer kn mn: en HshMp er som en slgs dobbelt-rry (f.eks bomringbilene) HshMp bomringbilene = new HshMp(); I en rry legger vi inn objekter i en bestemt posisjon, og vi må gå tilbke til denne posisjonen/indeksen når vi senere skl se på objektet. Indeksen er et heltll mellom 0 og length-1. bomringbilene regnum Bil 1 To viktige forskjeller mellom rryer og HshMp: regnum Bil 2 I en HshMp oppgir vi en bestemt nøkkel (vnligvis en tekststreng) når vi legger vi inn et nytt objekt (klt verdien), og vi oppgir denne nøkkelen når vi senere skl se på objektet. t Dvs. indeksen er en tekststreng. En HshMp hr ingen gitt lengde når vi lger den. Den vokser når legger inn nye elementer (inntil lgerplssen er oppbrukt) regnum Bil 3 En Hshmp er mer fleksibel (men lngsommere) måte å lgre flere/mnge elementer i et progrm nøkler verdier (keys) (vlues) 5 6 Ulike versjoner i Jv 1.4 (gmmel) og Jv 1.5/1.6 v HshMp Vi gjennomgår begge måtene, men nbefler klrt t 1.5- måten nyttes, d den hjelper deg mot visse feil (som ellers er lett å gjøre). 1.4 måten gjennomgås (bre) fordi mnge gmle progrmmer inneholder slik kode. 7 Eksempel på bruk v HshMp (1.5) Importer pkken jv.util Opprett en HshMp og forteller hvilke klsser nøkkelen og verdier import jv.util.*; hr. clss BrukAvHshMp { public sttic void min (String[] rgs) { HshMp<String,Person> h = new HshMp <String,Person>(); String fnr1 = 30128812344"; 3 Person per1 = new Person(fnr1, "Hrld Olsen"); h.put(fnr1, per1); Legg inn Person-objekt i HshMp en String fnr2 = 14109522547"; Person per2 = new Person(fnr2, Len Torsen"); h.put(fnr2, per2); Legg inn Person-objekt i HshMp en Person p = h.get( 30128812344 ); clss Person { String fnr; String nvn; Person(String fnr, String nvn) { this.fnr = fnr; this.nvn = nvn; String fånvn() { return nvn; Hent Person-objekt fr HshMp en 8

Opprette en HshMp, Jv1.4 (gmmel) og Jv 1.5-1.6 I strten v progrmmet: import jv.util.*; Dette importerer pkken jv.util hvor bl.. klssen HshMp ligger. I klssen eller metoden som skl bruke HshMp'en Jv 1.4: HshMp h = new HshMp(); I klssen eller metoden som skl bruke HshMp'en Jv 1.5 og nyere (best): HshMp <String,Person> h = new HshMp <String,Person>(); I Jv 1.5 forteller vi hvilke klsser nøkkel- og verdi-objektene kommer fr. Vi sier t vi d låser objektene til både nøkkelen og verdi-objektene til å være v disse typene. NB: Hvis tbellen skl brukes v flere metoder i en klsse, deklreres vribelen ovenfor i strten v klssen (som en objektvribel). Hvis tbellen kun skl brukes v en enkelt metode, er det nturlig å deklrere HshMp vribelen ovenfor inni den ktuelle metoden. Legge inn objekt i HshMp (smme i 1.4 og 1.5) Et hvilket som helst objekt i Jv kn legges inn i en HshMp, men i 1.5 må det være v den klssen vi hr lovet systemet Når vi legger et objekt inn i HshMp'en, må vi smtidig oppgi en nøkkel, dvs en tktt tekststreng som entydig tdi identifiserer objektet. bjktt Vi trenger denne nøkkelen dersom vi senere skl finne eller fjerne objektet i HshMp'en. Eksempel: String fnr = 30126512345 ; Person p = new Person(fnr, Kri Olsen ); h.put(fnr, p); Her lger vi først et Person-objekt (med pssende rgumenter) og legger det deretter inn i tbellen med fødselsnummeret som nøkkel. 9 10 Dersom vi legger inn flere objekter med smme nøkkel, er det bre det sist innlgte objektet som blir liggende i tbellen (de ndre overskrives): Person p1 = new Person(...); Person p2 = new Person(...); Person p3 = new Person(...); String nvn = "Jens"; h.put(nvn, p1); // p1 legges inn h.put(nvn, p2); // p2 legges inn og p1 overskrives h.put(nvn, p3); // p3 legges inn og p2 overskrives Noen gnger må vi konstruere en nøkkel ut fr flere vrible for å få entydighet: String lengdegrd = "67.3"; String breddegrd d = "53.3"; 3" String posisjon = lengdegrd + ";" + breddegrd; Fjelltopp fjell = new Fjelltopp(posisjon, Bjørnefjell ); h.put(posisjon, fjell); Hente objekt fr HshMp Jv 1.4 og 1.5 Jv 1.4: For å hente et objekt med utgngspunkt i nøkkelen: // 1.4: Vi vil finne en person ut fr fødselsnummeret: Person p = (Person) h.get(fnr); Legg merke til t vi i 1.4 i strten må skrive i prentes nvnet på klssen som objektet tilhører - i dette tilfellet klssen Person. Årsken er t i 1.4 HshMp'en ikke holder rede på hvilken klsse objektene som legges inn hr - bre t det er objekter. Når objektene hentes ut må vi derfor "minne Jv på" hvilken klsse objektet vr v (dette er egentlig et møte med en vnsert og svært nyttig meknisme i objektorienterte språk som klles rv og som blir ttt opp i vårens INF1010). Jv 1.5: For å hente et objekt med utgngspunkt i nøkkelen, nå trenger vi ikke si hvilken klsse objektet hr (det hr vi jo sgt i deklrsjonen v HshMpen h): // 1.5: Vi vil finne en person ut fr fødselsnummeret: Person p = h.get(fnr) Merk: å hente et objekt fr en HshMp slik som over medfører ikke t objektet bjktt fjernes fr HshMp'en (vi får bre en kopi v peker til objektet). 12

Fjerne objekt fr HshMp Løp gjennom lle objekter i HshMp Jv 1.4 For å fjerne et objekt med gitt fødselsnummer som nøkkel: h.remove(fnr); Dersom det ligger et objekt i HshMp'en med den gitte nøkkelen, blir objektet fjernet og setningen ovenfor returnerer med en peker til objektet som fjernes. Dersom det ikke ligger et objekt i HshMp'en med den gitte nøkkelen, returnerer setningen ovenfor verdien null. For å løpe gjennom lle objektene i en HshMp, lger vi en opprmsing: Itertor it = h.vlues().itertor(); Deretter ette kn vi se på hvert enkelt objekt i HshMp'en ved å gå i løkke: while (it.hsnext()) { Person p = (Person) it.next(); System.out.println( println( Nvn: + p.fånvn()); 13 14 Løp gjennom lle objekter i HshMp Jv 1.5 For å løpe gjennom lle objektene i en HshMp, lger vi en opprmsing og låser smtidig det vi skl hente til en bestemt klsse: Itertor <Person> it = h.vlues().itertor(); Deretter kn vi se på hvert enkelt objekt i HshMp'en ved å gå i løkke: while (it.hsnext()) { Person p = it.next(); System.out.println( Nvn: + p.fånvn()); Vi kn også i 1.5 nytte den nye for-løkk som utomtisk lger en itertor for (Person p: h.vlues()) { System.out.println( Nvn: + p.fånvn()); 15 To måter å løpe gjennom en HshMp 15 1.5 Løpe gjennom objektene (som på forrige foil): Itertor <Person>it = h.vlues().itertor(); while (it.hsnext()) { Person p = it.next(); <gjør noe med objektet p> Løpe gjennom nøklene: Itertor <String> it = h.keyset().itertor(); while (it.hsnext()) { String nøkkel = it.next(); <gjør noe med nøkkelen> 16

Metoder i HshMp Metode Eksempel Beskrivelse put h.put(nøkkel, objekt); Legg inn objekt med gitt nøkkel get -1.4 Person p = (Person) h.get(nøkkel); Finn objekt get -1.5 Person p = h.get(nøkkel); remove h.remove(nøkkel); Fjern objekt continskey if (h.continskey(nøkkel)) { // gjør et eller nnet Sjekk om nøkkel finnes i tbell vlues Itertor it = h.vlues().itertor(); Lg opprmsing v objektene keyset Itertor it = h.keyset().itertor(); Lg opprmsing v nøklene 17 Itertor (opprmsing) Eksempel Itertor it1 = h.vlues().itertor(); Itertor it2 = h.keyset().itertor(); hsnext() while (it.hsnext()) { < les neste og gjør noe>; next() 1.5 Person p = it.next(); next() 1.4 Person p = (Person) it.next(); t() Beskrivelse deklrrsjon returnerer true hvis flere objekter igjen i opprmsingen Finn neste objekt remove() Person p = it.next(); Fjern siste objekt som if (p.nvn.equls( Arne )) ble returnert med it.remove(); next() while (it1.hsnext()) { To måter å gå Person p1 = it1.next(); for (Person p2 : h.vlues()){ gjennom lle verdiene (objektene) i h... 18 import jv.util.*; import esyio.*; clss Hsheksempel { public sttic void min(string[] rgv) { In tsttur = new In(); HshMp <String,Person> personregister = new HshMp <String,Person>(); System.out.print("Antll personer som registreres : "); int nt = tsttur.inint(); clss Person { for (int i = 0; i < nt; i++) { String nvn, dresse, telefonnr; System.out.println( Gi neste person ); Person (In tsttur) { Person p = new Person(tsttur); System.out.print("Oppgi nvn : "); personregister.put(p.telefonnr, it t( tlf p); nvn = tsttur.inline(); System.out.print("Oppgi dresse : "); // Skriv ut lle personobjektene dresse = tsttur.inline(); System.out.println("Viser lle personer" + System.out.print("Oppgi telefonnummer : "); "(ukjent rekkefølge):"); telefonnr = tsttur.inline(); void skrivdt() { for (Person p: personregister.vlues()){ System.out.println("Nvn : " + nvn); p.skrivdt(); kidt() System.out.println("Adresse : " + dresse); System.out.println("Telefonnummer : +telefonnr); String fånvn() { return nvn; Eksempel fr bok s.186 Sortering Lære å løse et vnskelig problem Sortering mnge metoder, her Innstikksortering Sortere hv: Heltll Tekster Lære bstrksjon Når vi hr løst ett problem, kn lignende problemer løses tilsvrende Lære å lge proff progrmvre ved å lge en generell klsse (en vektøyboks) for sortering Hvordn deklrere en slik klsse Jvdoc lge dokumentsjon Testing Hvordn utvikle progrmmet 20

Sortering Mnge dttyper kn sorteres Tll Tekster (leksikogrfisk =i smme rekkefølge de ville stått i et leksikon) Tbeller v tekster eller tll Vi må h en lgoritme (fremgngsmåte) for sortering Det finns mnge titlls (hundretlls) metoder for sortering Dere skl lær den som er rskest når vi skl sortere få elementer, si < 50 elementer Hvorfor sorterer vi For å få noen tll i sortert rekkefølge eks: lotto-tllene Sortere tekster (nvnelister) Sortere noen opplysninger som hører smmen. Sorterer d på en v opplysningene. Eks. Telefonktlogen: nvn, dresse, telefonnummer sortert på nvn 21 22 Vi skl først lære å sortere heltll Dette skl vi så med minimle i endringer bruke til å sortere: String-rryer (tekster) t Vi ønsker en klsse med to vrinter v sortering: Heltll og tekster public clss ISort { public sttic void sorter(int [] ) { public sttic void sorter(string [] ) { // end clss ISort 23 24

clss TestInnstikkSortering { Test-progrm for sortering public sttic void min ( String[] rgs) { int [] = {3,1,7,14,2,156,77; String [] nvn = {"Ol", "Kri", "Arne", "Jo"; heltlls-rry 3 1 7 14 2 156 77 // sorter heltll - skriv ut ISort.sorter(); for (int i = 0; i <.length; i++) System.out.println( [" + i +"]= " + [i]); System.out.println("\n Test tekst-sortering:"); // sorter Stringer - skriv ut ISort.sorter(nvn); for (int i = 0; i < nvn.length; i++) System.out.println("nvn[" t + i +"]= " + nvn[i]); en-dimensjonl String-rry "Ol "Kri "Arne "Jo" nvn >jv InnstikkSortering [0]= 3 [1]= 1 [2]= 7 [3]= 14 [4]= 2 [5]= 156 [6]= 77 Test tekst-sortering: nvn[0]= Ol nvn[1]= Kri nvn[2]= Arne nvn[3]= Jo Test v test-progrmmet med tomme sortering-metoder En lgoritme for å sortere heltll innstikksmetoden 3 1 7 14 2 156 77 Se på rryen ett for ett element fr venstre mot høyre Sorterer det vi hittil hr sett på, ved : Hi Hvis det dtnye elementet ttvi ser på åikke er sortert t i forhold til de vi llerede hr sett på: T ut dette elementet (gjem verdien i en vribel t) Skyv på de ndre elementene vi her sett på en-etter-en, ett hkk høyreover til elemetet i t kn settes ned på sortert plss. D er den delen vi hr sortert ett element lenger (fr venstre) Når vi hr sett på lle elementene, er hele rryen sortert Observsjon : Det første elementet, er det sortert i forhold til seg selv 27 28

Sorter 1 på plss i forhold til 3 7 og 14 står riktig, Sorter 2 på plss i forhold til : 1,3,7,14 steg 1 3 1 7 14 2 156 77 steg 4 1 3 7 14 2 156 77 t 1 steg 5 1 3 7 14 2 156 77 steg 2 3 3 7 14 2 156 77 t 1 steg 3 1 3 7 14 2 156 77 t 1 steg 6 1 3 7 14 2 156 77 steg 7 1 3 3 7 14 156 77 steg 8 1 2 3 7 14 156 77 flytt: 14, 7 og så 3 ett hkk til høyre i k+1 Kode for å flytte ett element på plss : public clss ISort { 1 3 7 14 2 156 77 i k+1 1 3 7 14 156 77 3 1 2 3 7 14 156 77 // [k +1] står på // feil plss, t den ut int t = [k + 1], i = k; // skyv [i] mot høyre ett hkk til // vi finner riktig plss til t while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; // sett t inn på riktig plss [i + 1] = t; public sttic void sorter(int [] ) { for (int k = 0 ; k <.length-1; k++) { if ([k] > [k+1]) { // [k +1 ] står på feil plss, t den ut int t = [k + 1], i = k; // skyv [i] mot høyre ett hkk til // vi finner riktig plss til t while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; // sett t inn på riktig plss [i + 1] = t; // end heltll-sortering

>jv InnstikkSortering [0]= 1 Resultt v sortering med heltlls-metoden kodet, den ndre uten kode [1]= 2 [2]= 3 [3]= 7 [4]= 14 [5]= 77 [6]= 156 Sortering v tekster (String) "Ol "Kri "Arne "Jo" Test tekst-sortering: nvn[0]= Ol nvn[1]= Kri nvn[2]= Arne nvn[3]= Jo Vi skl sortere denne ved å bytte om på pekerne (l [0] peker på Arne,..osv) med innstikkmetoden 34 Sortere de to første elementene ved å bytte om pekere "Ol "Kri "Arne "Jo" t t = [1]; "Ol "Kri "Arne "Jo"" public sttic void sorter(int [] ) { // Sorterer heltllsrryen ''. for (int k = 0 ; k <.length-1; k++) { if ([k] > [k+1]) { int t = [k + 1]; int i = k; while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; [i + 1] = t; // end heltll-sortering t [1]= [0]; "Ol "Kri "Arne "Jo" t [0]= t; public sttic void sorter(string [] ) { // Sorterer String-rryen ''. for (int k = 0 ; k <.length-1; k++) { if( [k].compreto([k+1]) > 0 ){ String t = [k + 1]; int i = k; while (i >= 0 && ( [i].compreto(t) > 0) ){ [i + 1] = [i]; i--; [i + 1] = t; // end String-sortering

>jv InnstikkSortering [0]= 1 [1]= 2 Test med heltll og enkel String-sortering kodet [2]= 3 [3]= 7 [4]= 14 [5]= 77 [6]= 156 Test tekst-sortering: nvn[0]= Arne nvn[1]= Jo nvn[2]= Kri nvn[3]= Ol Jvdoc proff dokumentsjon v klssene Legg inn spesielle kommentrer i progrmmet ditt (over hver metode og klsse) Idi disse kommentrene kn mn legge HTMLkommndoer (som <br> for å få linjeskift) Kjør progrmmet jvdoc, og utomtisk ti hr du en fin dokumentsjon Største fordel: Kode og dukumentsjon vedlikeholdes på smme fil. 38 /** * Klsse for sortering etter 'innstikk-metoden', se * Rett på Jv - kp.5.7. * Sortering v heltllsrry, tekster og en to-dimensjonl * tekst-rry sortert etter verdiene i første kolonne.<br> * * N.B. Bre velegnet for mindre enn 100 elementer. * * Copyright : A.Mus, Univ. i Oslo, 2008 **********************************************************/ public clss ISort { /** * Sorterer heltll i stigende rekkefølge. * @prm heltllsrryen som sorteres. <br> * Endrer prmeter-rryen. ********************************************/ public sttic void sorter(int [] ) { /** * Sorterer String-rryer i stigende leksikogrfisk orden. * @prm rryen som sorteres.<br> * Endrer prmeter-rryen rr en ********************************************/ public sttic void sorter(string [] ) { // end clss ISort Dokumentsjon v klssen og metodene - jvdoc M:\INF1000\Isort>jvdoc pckge ISort.jv Loding source file ISort.jv... Constructing Jvdoc informtion... Stndrd Doclet version 1.5.0_02 Building tree for ll the pckges nd clsses... Generting ISort.html... Generting pckge-frme.html... Generting pckge-summry.html... Generting pckge-tree.html... Generting constnt-vlues.html... Building index for ll the pckges nd clsses... Generting overview-tree.html... Generting index-ll.html... Generting deprected-list.html... Building index for ll clsses... Generting llclsses-frme.html... Generting llclsses-nofrme.html... Generting index.html... Generting help-doc.html... Generting stylesheet.css... M:\INF1000\Isort> 40