© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.

Slides:



Advertisements
Liknande presentationer
Formulär Tänkte nu gå igenom vad ett formulär är och hur man kan skapa dem i Access.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
2D1311 Programmeringsteknik med PBL
Prolog, Mån 16/9 Rebecca Jonson.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
Algoritmer och data strukturer -Länkade listor
Sökning och sortering Linda Mannila
DAB752: Algoritmteori Leif Grönqvist
Logikprogrammering Ons, 25/9
Föreläsning 7 Analys av algoritmer T(n) och ordo
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Binära Sökträd, kapitel 19
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
DoA VT -07 © Anders Broberg, Lena Kallin Westin, P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A.
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Algoritm analys och rekursiva metoder kap 5,7
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning l5 Abstrakta datatyper och algoritmdesign.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Pathfinding. –Vad är det? –Sökning från A till B.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Vektorer (klassen Vector) Sortering
Listor En lista är en föränderlig ordnad samling objekt.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Bredden-först exempel ABCD EFGH IJKL MNOP = Obesökt.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Riktade listor i C och Java Lösning till gruppövning 1.
Namnrum, räckvidd och rekursion Linda Mannila
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 11 Trie, Sökning och Sökträd.
Datastrukturer och algoritmer
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16.
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 12.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 10.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Datastrukturer och algoritmer
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.
Datastrukturer och algoritmer
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8-9 Relationer, prioritetsköer, grafer och grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Relationer, prioritetsköer, grafer och grafalgoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003
Presentationens avskrift:

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Innehåll  Varför ska man sortera  Sortering vs sorterad datatyp  Stabilitet  Grundprinciper för sortering  Genomgång av några sorteringsalgoritmer  Hur fort går det att sortera en lista med n tal?

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Sortering varför?  Snabba upp andra algoritmer  Sökning  Hantera stora datamängder

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Sortering vs Sorterad datatyp  Sortering förändrar ordningen mellan objekten i en struktur efter en sorteringordning (fallande, ökande)  Sorterad datatyp  De strukturförändrande operationerna i gränsytan (insert, delete) upprätthåller en sorteringsordning mellan de lagrade objekten

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Saker att beakta  Absolut komplexitet  Totala komplexiteten i alla implementationssteg oTabell->lista->dubbellänkad lista  Passar en viss typ av sortering för en viss typ av implementation  Ska man sortera och sedan söka eller osorterad plus linjer sökning

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Stabilitet  Den inbördes relationen mellan två objekt med samma nyckel bibehålls vid sortering [(0,10),(2,3),(5,7),(8,0),(10,7) ] => [(8,0),(2,3),(5,7),(10,7),(0,10)]  Alla sorteringsalgoritmer går inte att göra stabila!!  Mer om detta senare…

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Olika grundprinciper  Insticks – O(n 2 )  välj ut ett godtyckligt och sätt in det på rätt plats  Urvals – O(n 2 )  välj ut det objekt som är på tur och sätt in det sist/först  Utbytes – O(n*log(n))  byta plats på objekt som ligger fel inbördes  Samsortering – O(n*log(n))  bygger på sammanslagning av redan sorterade strukturer  Nyckelsortering – O(m+n)…  kräver mer information/kunskap om objektmängden

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Mer principer…  Naiva sorteringar - O(n 2 )  Insticks, urvals, och vissa utbytes  ”Smarta” sorteringar - O(nlog(n))  Utbytes och samsorteringar  Ännu smartare sorteringar - O(n+m)…  Nyckelsorteringar…(nästa föreläsning)

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Bubbelsortering for i=1 to n-1 do for j=0 to n-1 do if (el[j] > el[j+1] do swap(el[j],el[j+1])  Stabil sortering?  Tidskomplexiteten?  O(n 2 )för en fältbaserad lista  O(?)för en länkad lista?

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Divide and Conquer  Rekursiv algoritm princip  Grund idén är att dela upp problemet i mindre och mindre problem  Lös dom för basfallet  Slå ihop till en totallösning  Mergesort och Quicksort är av denna typ  Men de jobbar lite annorlunda  O(n*log(n))

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Mergesort  Algoritm  Sortera sekvensen S  Divide: Om S har 2 eller flera element dela S i två lika stora delsekvenser S1 och S2  Recurse: Sortera sekvenserna S1 och S2 rekursivt  Conquer: Sätt tillbaka elementen i S genom att slå samman S1 och S2 till en sorterad sekvens

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Analys av mergesort  Mergesortträd  Ta ett binärt träd T  Varje nod i T representerar ett rekursivt anrop av mergesort  Associera insekvensen för varje anrop med varje nod v i T  Externa noder i T representerar varje enskilt element i ursprungssekvensen S

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Exempel…  Divide: Om S har 2 eller flera element dela S i två lika stora delsekvenser S1 och S2  Recurse: Sortera sekvenserna S1 och S2 rekursivt  Conquer: Sätt tillbaka elementen i S genom att slå samman S1 och S2 till en sorterad sekvens

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Ihopslagning av två sekvenser Agorithm merge(S1,S2,S) while S1 is not empty and S2 is not empty do if S1.first().element() ≤ S2.first().element() then S.insertLast(S1.remove(S1.first())) else S.insertLast(S2.remove(S2.first while S1 is not empty do S.insertLast(S1.remove(S1.first())) while S2 is not empty do S.insertLast(S2.remove(S2.first()))

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, S S S Exempel på sammanslagning Agorithm merge(S1,S2,S) while S1 is not empty and S2 is not empty do if S1.first().element() ≤ S2.first().element() then S.insertLast(S1.remove(S1.first())) else S.insertLast(S2.remove(S2.first while S1 is not empty do S.insertLast(S1.remove(S1.first())) while S2 is not empty do S.insertLast(S2.remove(S2.first()))

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Analys av exekveringstiden  Höjden på sorteringsträdet kopplat till sorteringen av en sekvens med n element blir log 2 (n)  Antag att insättning och borttagning är av O(1)  Tiden i varje nod i trädet exkluderat tiden för det rekursiva jobbet nedanför är O(n/2 i ) där i är djupet på noden ligger på, ty storleken på sekvensen är n/2 i  Det är exakt 2 i noder på djupet i => totala tiden på djupet i i trädet är O(2 i n/2 i ) vilket är O(n) och höjden på trädet är log(n)  Så den totala tidskomplexiteten är O(nlog(n))

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Quicksort  Algoritm  Välj ut ett pivoelement  Dela upp listan i tre delar Less, Equal, Greater  Sortera Less och Greater rekursivt  Slå ihop Less+Equal+Greater

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Quicksort - val av pivoelement  O(nlog(n) i bästa fallet  Valet av pivoelement kritiskt  Vill ha ett pivoelement som ligger i mitten  Vid sned fördelning får man insticks/urvals sortering med O(n 2 )  Alternativ (eftersträvar en enkel tilldelning) oVälj första/sista, slumpmässigt oMedel/median mellan några stycken oStörsta av de två första som skiljer sig åt

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Exempel…  Algoritm  Välj ut ett pivoelement (det första i listan)  Dela upp listan i tre delar Less, Equal, Greater  Sortera Less och Greater rekursivt  Slå ihop Less+Equal+Greater

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Analys av Quicksort  Lurad….detta är ju lab 3 :-),  Men medelfallet ligger nära bästa fallet och värsta fallet inträffar förhoppningsvis inte så ofta….  Slumpa ett pivoelement borde ge bra tidskomplexitet

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Inplace variant av quicksort  Algoritm  Traversera parallellt från båda hållen i S, gå bakåt från början av S tills man hittar ett element som är >= PE, traversera från slutet mot början till man hittar ett element som är < PE  Skifta plats på dessa två element  Upprepa till traverseringarna mötes  Skifta in PE på rätt plats  Rekursivt anropa på Less och Greater

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Exempel… LRR

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Hur snabbt kan man sortera?  Jämförelsebaserad sortering  Ω(nlog(n)) undre gräns  Nyckelsortering snabbare…  Nästa föreläsning

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Ω(nlog(n)) – bevis…  Exekveringstiden för en jämförelsebaserad sortering måste vara lika med eller större än djupet på det besluts träd som är associerad med algoritmen  Varje nod i detta träd är kopplat till en jämförelse som bestämmer ordning mellan två element i S  Därav, varje extern nod i T representerar en unik permutation av elementen i S, och det måste finnas n! noder i T, och höjden är log(n!)  Eftersom n! Har åtminstone n/2 termer som är större än eller lika med n/2 => log(n!) = log(n/2)n/2= (n/2)log(n/2) => Ω(nlog(n))