Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Sortering Ulike sorteringsmetoder Kompleksitet av dem.

Liknende presentasjoner


Presentasjon om: "Sortering Ulike sorteringsmetoder Kompleksitet av dem."— Utskrift av presentasjonen:

1 Sortering Ulike sorteringsmetoder Kompleksitet av dem

2 Sorteringsalgoritmer •O(n 2 )-metoder –Innsettingssortering –Boblesortering –Velgesortering •O(nlogn)-metoder –Flettesortering –Quicksort –Heapsort (kommer i kapittel 7) •Andre metoder –Shellsort –Tellesortering –Radikssortering

3 Vurderinger ved valg av sorteringsalgoritme •Tidsforbruk –Tidskompleksitet viktig ved store tabeller –Enkel algoritme viktigere ved mindre tabeller •Plassforbruk –Noen algoritmer må bruke O(n) ekstra plass •Hva som skal sorteres –Noen algoritmer fungerer bare på spesielle typer data –Noen algoritmer fungerer spesielt godt/dårlig hvis dataene kommer i bestemte rekkefølger –Noen ganger er det en fordel at like elementer ikke bytter plass

4 Noen begreper •Stigende sortering: Minste først, største sist. Motsatt: Synkende sortering –Vi forutsetter stigende sortering •Sorteringsnøkkel (evn bare nøkkel): Det vi sorterer etter •Stabil sortering: Elementer med lik nøkkel bytter ikke plass –Bare interessant hvis elementet består av mer enn nøkkelen –Eks: Har studentdata sortert på navn. Ønsker å sortere på klasse. Men for studenter i samme klasse vil vi beholde rekkefølgen

5 O(n 2 ) -metodene •Enkle metoder som egner seg for små tabeller •Innsettingssortering (alg side 50): –Start med en tabell av 0 sorterte elementer –Utvid gradvis den sorterte tabellen ved å sette inn ett og ett element på sortert plass •Velgesortering (alg side 52): –Finn minste element, plasser det først –Finn så nest minste, osv.

6 O(nlogn)-metoder •Flettesortering –Del tabellen i to, sorter hver del (rekursivt), flett sammen de to delene til en sortert tabell •Quicksort –Del tabellen i to ”hauger”, en for ”små”nøkler og en for ”store”. Sorter hver ”haug” (rekursivt). Når begge ”haugene” er sortert, er hele tabellen sortert

7 Flettesortering (alg side 56) •Sorter(0, n) –Sorter(0, n/2) –Sorter(n/2, n/2) –Sammenlign første element i den ene delen med første i den andre. Den minste plasseres i en ny tabell, og nytt element hentes for ny sammenligning. –Fortsett til alle elementene er flyttet over i resultattabellen

8 Tidskompleksitet •T(n) = 2T(n/2) + n •a=2, b=2, c=1, k=1 •b k =a => T(n) є Θ(nlogn)

9 Quicksort (alg side 59) •Må ha en delingsverdi som skiller mellom ”små” og ”store” •Går gjennom tabellen fra begge ender. Et ”stort” i nedre del bytter plass med et ”lite” i øvre del •Når de to tellerene møtes, har vi fått et delingspunkt som brukes i neste runde av rekursjonen •T(n) ≈ 2T(n/2) + cn

10 Nedre grense for kompleksitet •Hvis vi baserer oss på sammenligning av nøkler, kan vi aldri få noe bedre enn Θ(nlogn) •Quicksort er den raskeste generelle algoritmen som er funnet –Ulempe: Er ikke stabil •Flettesortering nesten like rask –Ulempe: Bruker ekstra plass

11 Algoritmer med lavere kompleksitet •Kan ikke bygge på sammenligning av nøkler •Kan bare brukes på spesielle typer data (for eksempel heltall innenfor et bestemt intervall) •Kan bli O(n) •Eks: Tellesortering og radikssortering

12 Tellesortering •Bare heltall i intervallet 0 til k •Lager en tabell med k+1 elementer •Teller opp hvor mange nøkler som er 0, 1, …k •Kan deretter beregne posisjonen til ethvert element siden vi vet hvor mange som er mindre enn det.

13 Radikssortering •Baserer seg på at alle nøkler har like mange siffer/tegn –Eks postnummer: 3456, 3884, 1958, 3883 •Sorterer på ett og ett siffer/tegn bakfra –1.runde: 3883, 3884, 3456, 1958 –2.runde: 3456, 1958, 3883, 3884 –3.runde: 3456, 3883, 3884, 1958 –4.runde: 1958, 3456, 3883, 3884 •Forutsetter stabil sortering av hvert siffer

14 Oppgave •Sorter tabellen 45, 13, 23, 17, 56, 84, 61 med –Innsettingssortering –Flettesortering –Quicksort –Radikssortering


Laste ned ppt "Sortering Ulike sorteringsmetoder Kompleksitet av dem."

Liknende presentasjoner


Annonser fra Google