Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering.

Lignende præsentationer


Præsentationer af emnet: "I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering."— Præsentationens transcript:

1 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering

2 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.2 Sortering Vi hartidligere set at effektiv søgning forudsætter at det datamateriale der skal søges i er sorteret. Også andre typer beregninger på store datamængder kan effektiviseres betragteligt hvis datamængderne er sorteret. Et eksempel er samkøring af tabeller (registre) i databaser. Blandt andet derfor er der brugt mange ressourcer på at finde effektive sorteringsalgoritmer, og det er fortsat et varmt forskningsområde.

3 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.3 Sortering af en sekvens Nogen gode idéer? s:

4 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.4 Et hav af sorteringsalgoritmer Indsættelsessortering Udvalgssortering Bobblesortering Flettesortering Heapsortering Shellsortering Bucketsort Combsort Quicksort...

5 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.5 Indsættelsessortering s: i lokalt sorteret (  ) i = 1; while ( i != s.size() ) { “indsæt s.elementAt(i) i s[0..i]” i++; }

6 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.6 Udvalgssortering s: i globalt sorteret (  ) i = 0; while ( i != s.size()-1 ) { int m = “indeks for en mindste værdi i s[i..s.size())”; “byt s[i] og s[m]”; i++; } m

7 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.7 Del, løs og kombinér? P P1P2 L1L2 L L1 = løs(P1)L2 = løs(P2) Del Løs Kombinér

8 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.8 Løsningselementer Hvad er løsningen på simple problemer Hvordan nedbrydes et problem i (to) delproblemer Hvordan kombineres (to) løsninger til en samlet løsning

9 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.9 Flettesortering void sort(Sequence s, int l, int h) { // pre: l <= h // post: s[l..h) er sorteret if ( l+1<h ) int m = (l+h)/2; sort(s, l, m); sort(s, m, h); merge(s, l, m, h); } void merge(Sequence s, int i, int j, int k) { // pre: s[i..j) og s[j..k) er sorteret // post: s[i..k) er den totale fletning af // s[i..j) og s[j..k) }

10 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.10 Quicksort void sort(Sequence s, int l, int h) { // pre: l <= h // post: s[l..h) er sorteret if ( l+1<h ) int p = partition(s, l, h); sort(s, l, p); sort(s, p+1, h); } int partition(Sequence s, int l, int h) { // post: p returneres hvor l <= p < h og // s[l..p) <= s[p] < s[p+1..h) }

11 i o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.11 Quicksort int partition(Sequence s, int l, int h) { // post: p returneres hvor l <= p < h og // s[l..p) <= s[p] < s[p+1..h) int i, j, e; i = l+1; j = h-1; e = s.elementAt(l); while( i<=j ) { if ( s.elementAt(i) <= e ) i++; else if ( s.elementAt(j) > e ) j--; else { swap(i, j); i++; j--; } } swap(l, j); return j; } s: l hij <= e> e?e


Download ppt "I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering."

Lignende præsentationer


Annoncer fra Google