Begreber og Redskaber 6. Plan for idag Tabeller Udvalgssortering, køretid Lidt mere om objekter Budskab: Køretid kan være et problem og bør løses med.

Slides:



Advertisements
Lignende præsentationer
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Advertisements

Begreber og Redskaber 7. Plan for idag Sorteringsalgoritmer Logaritmer,tabeller,køretid Simpelt iterativt: udvalgssortering Rekursivt: Flette sortering.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
KAPITEL 7 Kreditrisiko.
KAPITEL 3 Volatilitet, Beta og Tracking Error
Ventilation og indeklima
KAPITEL 10 Derivater.
KAPITEL 5 Delta Normal Value at Risk
dagsorden Metoder i samfundsfag – hvorfor?
Gode råd om ansøgning til MUDP 2017
Forældre-information
Statisk ubestemte konstruktioner. Robusthed
Trigonometri som værktøj for problemløsninger ved geometri og måling
Hvilke sager ligger der på vejlederkonsulentens bord for tiden?
C4 C4 i Hillerød Erhverv Handel Turisme, kultur, sport Uddannelse
Amukurs.dk Power point 1: Online præsentation af amukurs.dk - Sådan gør du: Læs ”Værd at vide, når du skal give en online præsentation af amukurs.dk”
Mit liv - nu med DAT MIT LIV - nu med DAT.
Et liv med OCD Nicoline Møller.
Interaktion og usability
KAPITEL 13 Kapitalkrav.
Billeder (Side 6-8 i artiklen: 2. Repræsentation og manipulation af Data)
Almen statskundskab Politisk meningsdannelse v/ Peter Nedergaard
SOPU Sund – motion Kondition og kredsløb.
Vejledning Opdaterede faktorer til kapacitetsberegning - Oktober 2016
Analyse af miljøforhold
Omkostninger til tilsyn m.v. for statsautoriserede revisorer
P4: Vejledning i læreruddannelsen
Landdistriktsudvikling i Haderslev Kommune
Hvor går de unge hen, når de går ud?
Aarhus: Program - dag 1 - d. 17. januar
806_Fader, Søn og Helligånd 1, S1
Bevis for længdeformlen i rummet
Koordinatsystemer og Kinematik
August, Holm, Olsen, Tobias og Viktor
Vektorprodukt (Krydsprodukt)
Teknisk service på hoteller, konference - og feriecentre
Hans nåde varer for evigt 1, S1
Residual plot.
Funktioner.
Informationsmøde om Praktikplads-AUB
Også kendt som Dynamisk fræsning…
Skrivedag 2: At skrive analyserende
Renteformlen.
Hvad er naturvidenskab?
Forskellige repræsentationer
Digital Transformation i bibliotekerne
Aula som momentum til at gentænke og styrke kommunikationen
Kort-sitet Med alle relevante temaer fra Kommuneplanen
NVF seminar Vintertjeneste på cykelstier og fortove
Relancering af wiki SAGERA projekt 2 Relancering af wiki
Klasse 5 Oplæg 4 + opgave 4 haben i nutid ”har”.
Børnehus ved Jernalderlandsbyen Møde i Det Grønne Råd 14. maj 2019
3. Sundhedsmappe Patienten har log-in og password
Hvem bestemmer dine valg? Tobaksforebyggelse i Sønderborg Kommune
Klimaindsatser -prioritering af pulje til grøn omstilling
Model og Tilgang strategi på det specialiserede voksenområde
Refleksionens betydning for den pædagogiske praksis i SFO og skole
Humanistisk Entrepreneurship 2 Forretningsmodellæredet Business Model Canvas Kreative grupper Pillon - KU.
Institut for pædagoguddannelse
Kort om praksisplanen for almen praksis
It og kristendomsfaget
GD2.i CVR adresse grundlag ved Lone Kai Hansen, Erhvervsstyrelsen
Svangreomsorgen starter hos praksispersonalet
Jeg troede jeg skulle have ”dobbeltskældud!”
Elevtrivselsundersøgelsen 2018 For erhvervsuddannelserne
Blondinen og den manglende 710
Implementering af lønsystem og hjemtagelse af lønadministration
REGAN Vest – Danskernes Koldkrigsmuseum
Øvelse ved bordene Målet med øvelsen er, at I sammen igangsætter arbejdet med at skabe nogle fælles retningslinjer for, hvordan jeres LokalMED fremover.
Oversvømmelses-beskyttelse
Præsentationens transcript:

Begreber og Redskaber 6

Plan for idag Tabeller Udvalgssortering, køretid Lidt mere om objekter Budskab: Køretid kan være et problem og bør løses med bedre algoritmer

Tabeller/Arrays int[] tabel = new int[100]; tabel[0]=1; tabel[99]=117; for(int i=0;i<tabel.length;i++) tabel[i]=i*29; Erklæring, konstruktion, initialisering

Tabeller Underprogrammer static void fill(int[] t, int v){ for(int i=0;i<t.length;i++)t[i]=v; }... main(…){ int[] tabel=new int[100]; fill(tabel,23); int[] tabel1=new int[10000]; fill(tabel1,0); }

Køretid static void fill(int[] t, int v){ for(int i=0;i<t.length;i++)t[i]=v; } Køretid proportional med længden af tabellen – jo større tabel, jo længere tid tager det. O(n) hvor n er størrelsen af inddata Eksempler: O(n 2 )O(2 n )O(n log(n))

Sortering En vilkårlig liste af heltal [11, 9, 17, 5, 12] ønskes sorteret [5, 9, 11, 12, 17]

Udvalgssortering Det mindste element og det forreste element [11, 9, 17, 5, 12] ombyttes. I den resulterende liste [5, 9, 17, 11, 12] er det forreste element korrekt placeret [5, 9, 17, 11, 12] Sådan fortsættes

Udvalgssortering [11, 9, 17, 5, 12] [5, 9, 17, 11, 12] [5, 9, 11, 17, 12] [5, 9, 11, 12, 17]

Udvalgssortering public static void sort(int[] a){ for (int i=0; i<a.length-1; i++){ int minPos = minimumPosition(a,i); if (minPos!=i){ int temp = a[minPos]; a[minPos] = a[i]; a[i] = temp; }

Hjælpeprogram til udvalgssortering public static int minimumPosition(int[] a, int from){ int minPos = from; for (int i=from+1; i<a.length; i++) if (a[i]<a[minPos]) minPos = i; return minPos; }

Figure 1 Time Taken by Selection Sort Bemærk køretid bliver hastigt lang for store tabeller

Køretid for udvalgssortering Husk public static void sort(int[] a){ for (int i=0; i<a.length-1; i++){ int minPos = minimumPosition(a,i);... public static int minimumPosition(int[] a, int from){ for (int i=from+1; i<a.length; i++)... Groft overslag: Lad n være a.length. for-løkke i sort gennemløbes ca n-gange. Hver gang kaldes minimumPosition der har optil n gennemløb. Altså n * n gennemløb eller O(n 2 )

Lidt mere præcist Første gang minimumPosition kaldes er der n-1 gennemløb, anden gang n-2 gennemløb, osv (n-1)+(n-2)+(n-3)+…+1 = n * (n-1) * 0.5 ca = n 2 altså O(n 2 )

Eksempel Antal sammenligninger (<): Tabel med 1000 udvalgssortering: Flettesortering:8706 Tabel med udvalgssortering: Flettesortering:120472

Køretider Eksempler: O(n 2 )O(2 n )O(n log(n)) Kvadratisk, eksponentiel, næsten lineær Gode algoritmer: lineær, næsten lineær Ubruglige algoritmer: eksponentiel

Logaritmer Det omvendte af potenser 10 5 = =1 log 10 (100000)=5log 10 (1)=0 2 8 = =1 log 2 (256)=8log 2 (1)=0 Regne med potenser og logaritmer a n+m =a n * a m log(n * m)=log(n)+log(m)

Logaritmer Hvor mange gange skal man knække et 256 meter langt rør midt over for at få et 1 meter langt stykke? Du tænker på et tal mellem 1 og 256. Hvor mange ja/nej spørgsmål skal jeg stille for at gætte det?

Overblik over objekter i Java Parametre til underprogrammer Data beskyttelse Statiske felter Nedarvning Overskrivning

public/private Synlighed: Felter og metoder kan være private for en klasser – usynlige udenfor class A{ private int i,j; public int getI(){return i;} public void setI(int x){i=x;} } // A a = new A(); // a.i=3 ej ok, a.setI(3) ok

Accessor/mutator God stil: Felter gøres private Værdier hentes med accessormetoder Felter ændres med mutatormetoder accessor: public int getI(){return i;} mutator public void setI(int x){i=x;}

Statiske felter class A{ static private int nr=0; A(){nr++;} static int getNr(){return nr;} } System.out.println(A.getNr()); A a = new A(); System.out.println(a.getNr());

Initialisering af statiske felter class A{ static int i; static { i = 0; } } Statisk initialiseringsblok – Udføres når programmet starter (i god tid før objekter oprettes)

Nedarvning class A{ int i; } class B extends A { int j;} //B er subtype af A A a = new A(); a.i = 1; B b = new B(); b.i = 1; b.j = 2; A aa = new B(); aa.i = 1; //ej aa.j // ej B bb = new A();

Subtyper A a = new A(); a.i = 1; B b = new B(); b.i = 1; b.j = 2; A aa = new B(); aa.i = 1; //ej aa.j b = (B) aa; // casting - typecheck b = (B) a; // køretidsfejl if(aa instanceof B) b = (B) aa; //typecheck

Subtyper A a; B b = new B(); a = b; // ingen casting b = (B) a // casting nødvendig A er supertype for B, B subtype af A Værdier af subtype må bruges som supertype

Overskrivning (overwriting) class A{ void hej(){System.out.println(”AA”);} } class B extends A{ void hej(){System.out.println(”BB”);} } A a = new A(); a.hej(); // AA B b = new B(); b.hej(); // BB A c = new B(); c.hej(); // BB I B: void hej1(){super.hej();} b.hej1(); // AA ((B) c).hej1(); // AA

Rekursive datastrukturer class Liste{ int i Liste naeste; Liste(int ii,Liste nn){i=ii;naeste=n;} } Liste list=new Liste(1,new Liste(2,null));