Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering."— Presentationens avskrift:

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

2 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20032 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?

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

4 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20034 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

5 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20035 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

6 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20036 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…

7 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20037 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

8 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20038 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)

9 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20039 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?

10 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200310 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))

11 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200311 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

12 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200312 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

13 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200313 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

14 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200314 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()))

15 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200315 3195715 S1 09267 S S2 319571509267 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()))

16 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200316 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))

17 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200317 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

18 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200318 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

19 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200319 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

20 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200320 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

21 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200321 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

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

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

24 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200324 Ω(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))


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

Liknande presentationer


Google-annonser