1 / 27

Begreber og Redskaber 6

Begreber og Redskaber 6. BRP. 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++)

Télécharger la présentation

Begreber og Redskaber 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Begreber og Redskaber 6 BRP

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

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

  4. 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); }

  5. 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(n2) O(2n) O(n log(n))

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

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

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

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

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

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

  12. 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 minimumPositionder har optil n gennemløb. Altså n*n gennemløb eller O(n2)

  13. 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 = n2 altså O(n2)

  14. Eksempel Antal sammenligninger (<): Tabel med 1000 udvalgssortering: 499500 Flettesortering: 8706 Tabel med 10000 udvalgssortering: 49995000 Flettesortering: 120472

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

  16. Logaritmer • Det omvendte af potenser 105=100000 100=1 log10(100000)=5 log10(1)=0 28=256 20=1 log2(256)=8 log2(1)=0 • Regne med potenser og logaritmer an+m=an * am log(n * m)=log(n)+log(m)

  17. 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?

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

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

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

  21. 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());

  22. 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)

  23. 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();

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

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

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

  27. 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));

More Related