Ulike sorteringsmetoder Kompleksitet av dem

Slides:



Advertisements
Liknende presentasjoner
Kombinatorikk for lærerstudenter
Advertisements

Tabeller av objekter Klassen ArrayList
Hvordan er et atom bygd opp?
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
1 Sannsynlighetsregning Gjenfinningssystemer og verktøy II Jon Anjer.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
Programmering i ActionScript - hva er det, og hvordan undervise?
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Erstatter i sin helhet skriv 1 (tidligere publisert på nettet)
Webprogrammering Arrays.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Fordelingsnøkkel Fordeling •Utvalget bestemte seg for å navngi de ulike dimensjonene som: –68 %: Sportslig (tidligere kalt 68 %) –10 %: Kommersiell.
Samordna Opptak Mål: Fordele studenter på studier.
IS-102 Klassedefinisjoner
Kapittel 14 Simulering.
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Eksempel AOA (Activity On Arc)
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Kompleksitetsanalyse
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Algoritmiske metoder Innhold: Effektivitetsbetraktninger Programmeringsteknikker Datastrukturer Algoritmer tilknyttet datastrukturene Lærebok: Hafting/Ljosland:
Klargjøring fra forrige gang
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Sortering og søk. Sortering av data som ligger på en fil Prisipielt to hovedmåter gjøre dette på: 1.Arbeide mot filen 1.Lese en linje, og lese de resterende.
Kapittel 11 Rekursjon Å tenke rekursivt Rekursjon er ein programmeringsteknikk der ein metode kallar seg sjølv for å fullføre ei oppgåve For å kunne.
MET 2211 Statistikk og dataanalyse
Komplekse tall Naturlige tall
Looking up data In P2P systems. Innhold Søkeproblemet Distribuerte Hash Tabeller Noen eksempel systemer: CAN Pastry Tapestry Chord (som vil bli sett nærmere.
Kap 02 Tabeller / Tabelloperasjoner. Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
INF 295 Algoritmer og datastrukturer Forelesning 21 Merge, Quick og Bøtte, Radix og ekstern sortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 1 - kapittel 1 Introduksjon Hans F. Nordhaug (Ola Bø) (Ketil Danielsen, 2007)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 4 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
ELEFANTKLUBBEN (De eldste barna)
Hovedfagspresentasjon
Møte med veiledere og kontaktpersoner Informasjon om en ukes praksis på fjerde semester av Lektorprogrammet.
Kvalitative og kvantitative metoder
Kapping av plater Mål: Vi skal lage komponenter for en møbelfabrikk ut fra standardiserte plater på 12 x 24 dm. Komponentene har lengde og bredde oppgitt.
Opptelling av karakterer Mål: Vi skal sammenligne karakterer studentene får i to kurs.
De 222 mest brukte ordene i det norske språket..
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Ortering Mål: Se på forskjellige måter for sortering.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
The Impact of DHT Routing Geometry on Resilience and Proximity TDT 2, Olav Engelsåstrø
Sikre kanaler Fra kapittel 8.2. Introduksjon Å beskytte kommunikasjonen mellom to parter kalles å lage en sikker kanal. Dette beskytter mot:  Avlytting/oppsnapping.
Inf1000 (Uke 5) Arrayer, filer og tekst
Sannsynlighet og kombinatorikk
Statistikk 2 M1 årskurs HVE 31. august 2009.
Matematikk 1 årskurs 26. oktober 2009
M1 årskurs HVE 7. september 2009
Stian Grønning Master i samfunnsøkonomi Daglig leder i Recogni.
Statistikk Forkurs Hva er statistikk? undersøke registrere lage oversikt→ Presentasjon av informasjon formidle Arbeidet med statistikk kan vi dele.
Datakortet – Modul 3 Word 2003, Kap Modul 3.
Brøk Regneartene.
TDT4105 Informasjonsteknologi, grunnkurs
INF2220 – høsten 2016, 9. nov. Sortering del I (kap. 7.) Arne Maus,
Forelesning nr. 2 Kapittel 3: Å generalisere fra en stikkprøve
Eric Jul PSE, Inst. for informatikk
Utskrift av presentasjonen:

Ulike sorteringsmetoder Kompleksitet av dem

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

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

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

O(n2) -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.

O(nlogn)-metoder Flettesortering Quicksort 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

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

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

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

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

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

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.

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

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