Sortering i lineær tid

Relaterede dokumenter
Sortering. Eksempel: De n tal i sorteret orden

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering af information er en fundamental og central opgave.

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Sortering ved fletning (merge-sort)

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DM507 Algoritmer og datastrukturer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Grundlæggende køretidsanalyse af algoritmer

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Datastrukturer (recap)

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Datastrukturer (recap)

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Prioritetskøer og hobe. Philip Bille

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

DM507 - Algoritmer og datastrukturer

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

BRP Sortering og søgning. Hægtede lister

Divide-and-Conquer algoritmer

Analyse af algoritmer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Datastrukturer (recap) Datastruktur = data + operationer herpå

DM02 Kogt ned. Kokken. Januar 2006

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Algoritmisk geometri

Grafer og graf-gennemløb

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Grafer og graf-gennemløb

Danmarks Tekniske Universitet

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil

Grafer og graf-gennemløb

Grafer og graf-gennemløb

DM02 opgaver ugeseddel 2

Danmarks Tekniske Universitet

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - October 10, 2008

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Grafer og graf-gennemløb

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Søgning og Sortering. Philip Bille

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Danmarks Tekniske Universitet

Sammenhængskomponenter i grafer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

Danmarks Tekniske Universitet

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Danmarks Tekniske Universitet

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

MM4. Algoritmiske grundprincipper. Lister, stakke og køer. Hash-tabeller og Træer. Sortering. Søgning.

Divide-and-Conquer algoritmer

DM507 Algoritmer og datastrukturer

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Divide-and-Conquer algoritmer

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Minimum udspændende Træer (MST)

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Transkript:

Sortering i lineær tid

Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel.

Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel. Grundlæggende handling: sammenligning af to elementer i input. Grundlæggende svar: opstilling som skal laves for at få sorteret orden.

Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel. Grundlæggende handling: sammenligning af to elementer i input. Grundlæggende svar: opstilling som skal laves for at få sorteret orden. Model for sammenligningsbaserede sorteringsalgoritmer: Labels for indre knuder: array-indeks for to input elementer der sammenlignes. Labels for blade (svar når algoritmen stopper): hvilken opstilling der skal laves for at få sorteret orden.

Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel. Grundlæggende handling: sammenligning af to elementer i input. Grundlæggende svar: opstilling som skal laves for at få sorteret orden. Model for sammenligningsbaserede sorteringsalgoritmer: Labels for indre knuder: array-indeks for to input elementer der sammenlignes. Labels for blade (svar når algoritmen stopper): hvilken opstilling der skal laves for at få sorteret orden. Worst-case køretid: længste rod-blad sti = træets højde.

Sammenligningsbaseret sortering For en fast samling af n elementer er der n! = 1 2 3 4 5... n forskellige input (rækkefølger af elementer). Hvis algoritmen (træet) skal kunne sortere alle disse, skal der være mindst n! blade - ellers vil der være to forskellig input som leder til samme svar, og for det ene input må svaret være forkert.

Sammenligningsbaseret sortering For en fast samling af n elementer er der n! = 1 2 3 4 5... n forskellige input (rækkefølger af elementer). Hvis algoritmen (træet) skal kunne sortere alle disse, skal der være mindst n! blade - ellers vil der være to forskellig input som leder til samme svar, og for det ene input må svaret være forkert. Et træ af højde h har højst 2 h blade (da det fulde træ har det).

Sammenligningsbaseret sortering For en fast samling af n elementer er der n! = 1 2 3 4 5... n forskellige input (rækkefølger af elementer). Hvis algoritmen (træet) skal kunne sortere alle disse, skal der være mindst n! blade - ellers vil der være to forskellig input som leder til samme svar, og for det ene input må svaret være forkert. Et træ af højde h har højst 2 h blade (da det fulde træ har det). 2 h antal blade n!

Sammenligningsbaseret sortering For en fast samling af n elementer er der n! = 1 2 3 4 5... n forskellige input (rækkefølger af elementer). Hvis algoritmen (træet) skal kunne sortere alle disse, skal der være mindst n! blade - ellers vil der være to forskellig input som leder til samme svar, og for det ene input må svaret være forkert. Et træ af højde h har højst 2 h blade (da det fulde træ har det). 2 h antal blade n! h log(n!) = log(1 2 3... n)

Sammenligningsbaseret sortering For en fast samling af n elementer er der n! = 1 2 3 4 5... n forskellige input (rækkefølger af elementer). Hvis algoritmen (træet) skal kunne sortere alle disse, skal der være mindst n! blade - ellers vil der være to forskellig input som leder til samme svar, og for det ene input må svaret være forkert. Et træ af højde h har højst 2 h blade (da det fulde træ har det). 2 h antal blade n! h log(n!) = log(1 2 3... n) = log(1) + log(2) +... log(n/2) + log(n) n 2 log(n 2 ) = n (log(n) 1) 2

Sammenligningsbaseret sortering For en fast samling af n elementer er der n! = 1 2 3 4 5... n forskellige input (rækkefølger af elementer). Hvis algoritmen (træet) skal kunne sortere alle disse, skal der være mindst n! blade - ellers vil der være to forskellig input som leder til samme svar, og for det ene input må svaret være forkert. Et træ af højde h har højst 2 h blade (da det fulde træ har det). 2 h antal blade n! h log(n!) = log(1 2 3... n) = log(1) + log(2) +... log(n/2) + log(n) n 2 log(n 2 ) = n (log(n) 1) 2 h = Ω(n log n)

Counting sort Elementer heltal: elementer kan bruges som array-indekser ( at bruge sammenligninger på elementer). Counting sort: Sorterer n heltal af størrelse mellem 0 og k. Inputarray: A (længde n) Outputarray: B (længde n) Array af tællere for hver mulig elementværdi: C (længde k + 1)

Counting sort Tid: O(n + k) Counting-Sort(A,B,k) for i = 0 to k C[i] = 0 for j = 1 to A.length C[A[j]] + + for i = 1 to k C[i] = C[i] + C[i 1] for j = A.length downto 1 B[C[A[j]]] = A[j] C[A[j]] Bemærk: stabil (da sidste løkke løber baglæns gennem både A og B), dvs at elementer med ens værdier beholder deres indbyrdes plads.

Radix sort Radix sort: Sorterer n heltal alle med d cifre i base (radix) k. (dvs. cifrene er heltal i {0, 1, 2,..., k 1}) På figuren nedenfor er der 7 heltal med 3 cifre i base 10. Radix-Sort(A,d) for i = 1 to d use a stable sort to sort A on digit i from right Tid: O(d(n + k)) hvis der bruges Counting Sort i løkken. Korrekthed: Efter i te iteration er løkken er A sorteret hvis man kun kigger på de i cifre mest til højre.

Radix sort Eksempel: 32-bits heltal 11011001 10011000 01101000 10110101 Countingsort sorterer disse i tid O(n + 2 32 ) Dette er O(n) hvis n 2 32 = 4.294.967.296

Radix sort Eksempel: 32-bits heltal 11011001 10011000 01101000 10110101 Countingsort sorterer disse i tid O(n + 2 32 ) Dette er O(n) hvis n 2 32 = 4.294.967.296 Se som 2-cifrede tal i base 2 16 (bemærk: sorteret orden er den samme) 11011001 10011000 01101000 10110101 Radixsort sorterer disse i tid O(2(n + 2 16 )) Dette er O(n) hvis n 2 16 = 65.536

Radix sort Eksempel: 32-bits heltal 11011001 10011000 01101000 10110101 Countingsort sorterer disse i tid O(n + 2 32 ) Dette er O(n) hvis n 2 32 = 4.294.967.296 Se som 2-cifrede tal i base 2 16 (bemærk: sorteret orden er den samme) 11011001 10011000 01101000 10110101 Radixsort sorterer disse i tid O(2(n + 2 16 )) Dette er O(n) hvis n 2 16 = 65.536 Se som 4-cifrede tal i base 2 8 (bemærk: sorteret orden er den samme) 11011001 10011000 01101000 10110101 Radixsort sorterer disse i tid O(4(n + 2 8 )) Dette er O(n) hvis n 2 8 = 256