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

Slides:



Advertisements
Lignende præsentationer
Stored Procedure Stored Procedure er programstumper, der gemmes i databasen og afvikles op databaseserveren på samme måde som forespørgsler. Med Stored.
Advertisements

Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
Informationsteknologi B-A, HHX, 2005,
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Rekursion og rekursive algoritmer Rekursion Sorteringsalgoritmer Forklaring af sorteringsalgoritmer Rasmus D. Lehrmann1.
1 Nordjyllands Erhvervakademi Lektion 6 Opsamling på opgaver Mere om rekursion: –Del&Hersk –Sortering –Kompleksitet (effektivitet – ”Store O”) Abstrakte.
Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen.
Datastruktur & Algoritmik1 Sidste gang For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key For.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
MM4 Algoritmiske grundprincipper. MM1 Lister, stakke og køer. MM2 Hash-tabeller og Træer. MM3 Sortering.MM4 Søgning.MM5.
Begreber og Redskaber 7. Plan for idag Sorteringsalgoritmer Logaritmer,tabeller,køretid Simpelt iterativt: udvalgssortering Rekursivt: Flette sortering.
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.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel 2.3, , problem 30.1.c] Gerth Stølting Brodal.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
1 Sortering. 2 Plan Elementære metoder til sortering -sortering ved indsættelse -Shellsort Sorteringsmetoder baseret på rekursion –quicksort –flettesortering.
Grafalgoritmer II.
1 Sortering II. 2 Plan Avancerede sorteringsmetoder: Metoder med kompleksitet O(n logn): - Quicksort (ekskurs: udvælgelse) - Sortering ved fletning
FEN IntroJava AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
1 Sortering. 2 Plan Elementære metoder til sortering -sortering ved indsættelse -Shellsort Sorteringsmetoder baseret på rekursion –quicksort –flettesortering.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Grundlæggende programmering Forår 2002
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Sweep-algoritmer. DAIMIIntroducerende objektorienteret programmeringsweep.2 Datatypen Sequence Oprette Sequence() Sequence(s, l, h) Kopiere Sequence clone()
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive.
Sortering.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSortering.2 Sortering Vi hartidligere set at effektiv søgning forudsætter.
Rekursive skildpadder Supertrekanter.....  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursive skildpadder.2 Penta, etc.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Bærbak & Caspersen, 2000 Introducerende objektorienteret programmering4B.1 Talsystemer Positionstalsystemer Decimale og binære tal.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, Marts 1999Introducerende objektorienteret programmering5B.1 Et lille banksystem Modellering ved hjælp af UML.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14A.1 Del, løs og kombinér.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Single-Source Shortest Path i ekstern hukommelse Jonas Thomsen Ph.d. studerende Kvalifikationseksamen 27. september 2004.
Positionstalsystemer Decimale og binære tal
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering6C.1 OOP – Hvorfor nu det? Funktionsorienteret versus objektorienteret systemudvikling.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering6B.1 Rekursive skildpadder Supertrekanter....
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
I o p o DAIMI, AU, November 1999Introducerende objektorienteret programmering9D.1 Del, løs og kombinér.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5B.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering3E.1 Syntaksbeskrivelse Udtryk og Java-programmer.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Del, løs og kombinér Et algoritmemønster.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering7B.1 Søgning.
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ]
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer Grådige Algoritmer [CLRS ]
Præsentationens transcript:

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

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.

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

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

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

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

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

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

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

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

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