Kap 02 Tabeller / Tabelloperasjoner. Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Høgskolen i Oslo Webprogrammering SQL og databaser del 3.
Kap 04 Lister. Listestrukturer Listestrukturer hensiktsmessige ved såkalte flyktige tabeller (tabeller med relativt mye innsetting/sletting)
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
TIF seminar -Visual Basic (VBA) og RExcel Elisabeth Orskaug Norsk Regnesentral Oslo, 8. november 2011.
Kontrollstrukturer (Kapittel 3)
Matematisk Induksjon.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang
Tabeller – Arrays Lage frekvenstabell Norske Bokstaver
Ulike sorteringsmetoder Kompleksitet av dem
IS-102 Klassedefinisjoner
Databasehåndtering med MySQL
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
En gang til!? .
Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Sortering og søk. Sortering av data som ligger på en fil Prisipielt to hovedmåter gjøre dette på: 1.Arbeide mot filen 1.Lese en linje, og lese de resterende.
INF150 Programmering mandag 11.9
Kap 06 Ordnede / Sorterte lister. Ordnede lister / Sorterte lister OrderedList:Listestruktur hvor rekkefølgen har betydning Eks:Innholdsfortegnelse i.
Kap 01 Innledning I dette kapitlet skal vi se litt følgende hovedtemaer: - Kursoppbygging - Hva er algoritmer og datastrukturer - Anvendelser - …
Kap 04 Datamodellering. Datamodellering -Et språk for å analysere og beskrive virkeligheten. -En metode for å beskrive naturlige sammenhenger i data som.
Kap 07 Stakk I dette kapitlet skal vi se på datastrukturen stakk.
1 Kap 08 Kø. 2 Kø - Definisjon En kø (eng queue) er en lineær struktur hvor elementer kan innsetttes kun i den ene enden av listen, kalt bak, og fjernes.
Kap 10 Graf.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
INF 295 Algoritmer og datastrukturer Forelesning 21 Merge, Quick og Bøtte, Radix og ekstern sortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Versjon 16 Søking. Søking i alle moduler Søking er ikke lenge en egen modul. Det finnes nå som en del av alle moduler. Bruk hurtigtast F9. Eller ikon.
Eksempel på SQL ”SQL-setninger” har en struktur som likner på ”naturlig språk”, med ”verb, subjekter og adjektiver”. SQL-setningene begynner alltid med.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Kap 09 Tre.
INF3100 – – Ellen Munthe-Kaas Indeksering UNIVERSITETET I OSLO © Institutt for Informatikk Utvalgte animerte lysark: lysark nr. 7, 8, 9, 10,
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Ortering Mål: Se på forskjellige måter for sortering.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Sterke og 2-sammenhengende komponeneter, DFS
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
Inf1000 (Uke 5) Arrayer, filer og tekst
Oversikt Access Hva en bør beherske så langt. Tabeller Felt Typer (heltall, desimaltall, tekst, Boolean) Primary Key.
Forelesning 9 Are Raklev.
Are Raklev Teoretisk fysikk, rom FØ456,
Måling.
Forelesning 4 Are Raklev.
Den epigenetiske klokken
Måling.
AST En kosmisk reise Forelesning 2:
Forelesning 5: Dopplereffekten Relativitetsteori Partikkelfysikk
Are Raklev Teoretisk fysikk, rom FØ456,
Tallsystemer.
Tall og algebra Matematikk 1T
Kunnskap skaper verdier
De indre planetene og månen – del 2:
Oversikt over tvangsreglene i helseretten
Utvalgte animerte lysark: lysark nr. 7, 8, 9, 10, 26, 28, 30, 33, 35
Velkommen til Newtonrommet
Kvadratiske funksjoner
Innføringskurs i kommunikasjon via tolk
Demens, vanskeleg oppførsel- og medisinaR Overlege Gro Selås Olaviken
Institusjonsforskning i et internasjonalt perspektiv
Utskrift av presentasjonen:

Kap 02 Tabeller / Tabelloperasjoner

Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12

Array Les inn nedbørmengde for årets 12 måneder: FOR mnd := 1 TO 12 les nedbor[mnd] ENDFOR nedbor nedbor[2] FOR mnd := januar TO desember les nedbor[mnd] ENDFOR

Attributter Funksjoner Array / Struct / Class ArrayStructClass

class Behandle nedbørmengde for årets 12 måneder: class Nebor { private: data[12] public: Nedbor(…) setNedbor(…) getNedbor(mnd) sum( ) gjennomsnitt( ) getMax( ) getMin( ) … }

Søkemetoder - Lineær søking -Stegvis søking -Binær søking

Lineær søking - Strategi Tabellen trenger ikke være sortert. Søker fortløpende fra begynnelsen av tabellen inntil søkt post er funnet eller vi finner ut at søkt post ikke finnes. Søkt post

Lineær søking Algoritme 1 LinSok (tab,max,sid) /*Rutinen søker lineært etter gitt post i en tabell*/ /*og returnerer med nr = tabellposisjon til funnet post.*/ /*Hvis posten ikke finnes, returneres 0.*/ /*tab:Tabellen hvor søkingen skal foregå*/ /*max:Maksimalt antall elementer i tabellen*/ /*sid:Verdien til søkt Id*/ nr:=0 n :=1 WHILE (nr = 0) AND (n<=max) DO IF sid = tab[n]THEN nr:=n ELSE n:=n + 1 ENDIF ENDWHILE Return nr

Lineær søking Algoritme 2 LinSok (tab,max,sid) /*Rutinen søker lineært etter gitt post i en tabell*/ /*og returnerer med nr = tabellposisjon til funnet post.*/ /*Hvis posten ikke finnes, returneres 0.*/ /*tab:Tabellen hvor søkingen skal foregå*/ /*max:Maksimalt antall elementer i tabellen*/ /*sid:Verdien til søkt Id*/ n :=1 WHILE (n tab[n]) DO n:=n + 1 ENDWHILE IF n <= max THEN nr := n ELSE nr := 0 Return nr

Lineær søking Antall aksesser Maksimalt antall aksesser: Gjennomsnittlig antall aksesser:

Stegvis søking - Strategi Tabellen må være sortert. Søker fra begynnelsen i sprang inntil vi har kommet tilstrekkelig langt. Søker eventuelt innenfor siste sprang. Søkt post

Stegvis søking Antall aksesser 1 Maksimalt antall aksesser:

Stegvis søking Antall aksesser 2 Gjennomsnittlig antall aksesser: Optimal steglengde: Gjennomsnittlig antall aksesser ved optimal steglengde:

Stegvis søking Algoritme StegSok (tab,max,sid) /*Rutinen søker stegvis etter gitt post i en tabell*/ /*og returnerer med nr = tabellposisjon til funnet post.*/ /*Hvis posten ikke finnes, returneres 0.*/ /*tab:Tabellen hvor søkingen skal foregå*/ /*max:Maksimalt antall elementer i tabellen*/ /*sid:Verdien til søkt Id*/ nr:=0 x:=Sqrt(max) forst:=1 sist:=max forrige:=forst WHILE (forst < sist) AND (tab[forst] < sid) DO// sprang forrige:= forst forst:= minst(forst+x,sist) ENDWHILE i := forst IF sid <> tab[i] THEN i := forrige WHILE (i < forst) AND (tab[i] < sid) DO// lineært i := i + 1 ENDWHILE ENDIF IF sid = tab[i] THEN nr := i ENDIF Return nr

Binær søking - Strategi Tabellen må være sortert. Halverer fortløpende og søker videre i aktuell halvdel. Søker inntil søkt post er funnet eller vi kun har en post igjen.

Binær søking Antall aksesser Antall poster i tabellen:N Etter 1 halvering har vi igjen :N/2 =N/2 1 poster Etter 2 halveringerhar vi igjen :N/4 =N/2 2 poster Etter 3 halveringerhar vi igjen :N/8 =N/2 3 poster Etter Ahalveringer har vi igjen :N/2 A poster Maksimalt antall aksesser: Gjennomsnittlig antall aksesser:

Binær søking Algoritme 1 BinSok (tab,max,sid) /*Rutinen søker binært etter gitt post i en tabell*/ /*og returnerer med nr = tabellposisjon til funnet post.*/ /*Hvis posten ikke finnes, returneres 0.*/ /*tab:Tabellen hvor søkingen skal foregå*/ /*max:Maksimalt antall elementer i tabellen*/ /*sid:Verdien til søkt Id*/ nr:=0 forst:=1 sist:=max mid:=(forst+sist) DIV 2 WHILE (sid <> tab[mid]) AND (forst < sist) DO IF sid < tab[mid] THEN sist := mid - 1 ELSE forst := mid + 1 ENDIF mid := (forst + sist) DIV 2 ENDWHILE IF sid = tab[mid] THEN nr := mid ENDIF Return nr

Binær søking Algoritme 2 BinSok (tab,forst,sist,sid) /*Rutinen søker binært etter gitt post i en tabell*/ /*og returnerer med nr = tabellposisjon til funnet post.*/ /*Hvis posten ikke finnes, returneres 0.*/ /*Søkingen er rukursiv.*/ /*tab:Tabellen hvor søkingen skal foregå*/ /*forst:Peker (indeks) til første element*/ /*sist:Peker (indeks) til siste element*/ /*sid:Verdien til søkt Id*/ mid:=(forst+sist) DIV 2 IF forst > sist THEN Return 0 ELSEIF sid = tab[mid] THEN Return mid ELSEIF sid < tab[mid] THEN Return BinSok(tab,forst,mid-1,sid) ELSE Return BinSok(tab,mid+1,sist,sid) ENDIF

Søkemetoder - Oppsummering (1/2) Lineær søking Stegvis søking Binær søking

Søkemetoder - Oppsummering (2/2) Lineær søking Stegvis søking Binær søking N = 2 millioner

Sortering Ofte er det ønskelig å kunne gi data-elementene en viss ordning eller struktur, dette for raskere / enklere å kunne behandle disse dataene og/eller med tanke på fremtidig anvendelse. En form for ordning er sortering.

Sorterings-metoder - Boblesortering -Bucketsort -Shellsort - Quicksort -...

Boblesortering - Eksempel (1) * * * *

* Boblesortering - Eksempel (2)

* Boblesortering - Eksempel (3)

* Boblesortering - Eksempel (4)

Boblesortering - Algoritme 1 BSort (tab,n) /*Rutinen sorterer tabeller vha boblesortering*/ /*tab:Tabellen som skal sorteres*/ /*n:Maksimalt antall elementer i tabellen*/ bytt:= true j:= 1 WHILE bytt DO bytt := false FOR i:=1 TO n-j DO IF tab[i] > tab[i+1] THEN bytt:=true x:=tab[i] tab[i]:=tab[i+1] tab[i+1]:=x ENDIF ENDFOR j := j + 1 ENDWHILE

Boblesortering - Algoritme 2 BSort (tabId,tabDt,n) /*Rutinen sorterer tabeller vha boblesortering*/ /*tabId:Tabellen som inneholder sorteringsnøkkelen*/ /*tabDt:Tabellen(e) som inneholder resterende data*/ /*n:Maksimalt antall elementer i tabellen*/ bytt:= true j:= 1 WHILE bytt DO bytt := false FOR i:=1 TO n-j DO IF tabId[i] > tabId[i+1] THEN bytt := true x:=tabId[i] tabId[i]:=tabId[i+1] tabId[i+1]:= x y:=tabDt[i] tabDt[i]:=tabDt[i+1] tabDt[i+1]:= y ENDIF ENDFOR j := j + 1 ENDWHILE Nilsen Olsen Hansen Knutsen Persen tabIdtabDt

Boblesortering - Algoritme 3 BSort (tab,n) /*Rutinen sorterer tabeller vha boblesortering*/ /*tab:Tabellen som inneholder sorteringsnøkkelen*/ /*n:Maksimalt antall elementer i tabellen*/ bytt:= true j:= 1 WHILE bytt DO bytt := false FOR i:=1 TO n-j DO IF tab[i].id > tab[i+1].id THEN bytt := true x:=tab[i] tab[i]:=tab[i+1] tab[i+1]:= x ENDIF ENDFOR j := j + 1 ENDWHILE Nilsen Olsen Hansen Knutsen Persen iddt

Ordentabeller Ved sortering av store/mange tabeller, kan vår opprinnelige boblesorteringsmetode medføre flytting av store datamengder. En forbedring kan utføres vha av en såkalt ordentabell. Ordentabellen leses sekvensielt forfra og indikerer i hvilken rekkefølge tabellen(e) skal leses. Før sorteringEtter sortering

Boblesortering vha ordentabell BSort (tab,orden,n) /*Rutinen sorterer tabeller vha boblesortering*/ /*tab:Tabellen som skal sorteres*/ /*orden:Ordentabell*/ /*n:Maksimalt antall elementer i tabellen*/ bytt:= true i:= 1 WHILE bytt DO bytt := false FOR i:=1 TO n-j DO IF tab[orden[i]] > tab[orden[i+1]] THEN bytt:=true x:=orden[i] orden[i]:=orden[i+1] orden[i+1]:=x ENDIF ENDFOR j := j + 1 ENDWHILE

Innsetting / Sletting i tabeller Innsetting Sletting

Innsetting i tabell - Algoritme Innsett (tab,max,n,nyPost,pos,flag) /*Rutinen setter inn ny post i en tabell*/ /*tab:Tabellen hvor ny post skal innsettes*/ /*max:Maksimalt antall plasser i tabellen tab*/ /*n:Første ledige posisjon i tabellen tab*/ /*nyPost:Ny post som skal innsettes*/ /*pos:Posisjon i tab hvor ny post skal innsettes*/ /*flag:Returnerer true hvis innsetting ok*/ IF n > max THEN flag := false ELSE flag:= true i:= n - 1 WHILE i >= pos DO tab[i+1]:= tab[i] i:= i - 1 ENDWHILE tab[pos]:= nyPost n := n + 1 ENDIF

Sletting i tabell - Algoritme Slett (tab,n,pos) /*Rutinen sletter en post i en tabell*/ /*tab:Tabellen hvor post skal slettes*/ /*n:Første ledige posisjon i tabellen tab*/ /*pos:Posisjon i tab hvor post skal slettes*/ i := pos WHILE i < n-1 DO tab[i]:= tab[i+1] i:= i + 1 ENDWHILE n := n - 1

Henting i tabell - Algoritme Hent (tab,n,pos,post) /*Rutinen henter og sletter en post i en tabell*/ /*tab:Tabellen hvor post skal slettes*/ /*n:Første ledige posisjon i tabellen tab*/ /*pos:Posisjon i tab hvor post skal slettes*/ /*post:Returnerer med post som skal slettes*/ post := tab[pos] Slett(tab,n,pos)

ENDEND