Sortiranje prebrajanjem (Counting sort) i Radix Sort

Σχετικά έγγραφα
Operacije s matricama

7 Algebarske jednadžbe

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

18. listopada listopada / 13

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

Računarska grafika. Rasterizacija linije

radni nerecenzirani materijal za predavanja

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

Metode sortiranja nizova

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

π π ELEKTROTEHNIČKI ODJEL i) f (x) = x 3 x 2 x + 1, a = 1, b = 1;

Teorijske osnove informatike 1

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

Algoritmi i strukture podataka - 1.cas

ELEKTROTEHNIČKI ODJEL

TRIGONOMETRIJA TROKUTA

5. Karakteristične funkcije

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Sortiranje spajanjem (Merge( Sort) Algoritam sortiranja spajanjem: ulaz je lista a 1. ,,, a n/2. , izlaz sortirana lista

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Zavrxni ispit iz Matematiqke analize 1

Σχεδίαση και Ανάλυση Αλγορίθμων

21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE GODINE 8. RAZRED TOČNI ODGOVORI

SEMINAR IZ KOLEGIJA ANALITIČKA KEMIJA I. Studij Primijenjena kemija

Računarska grafika. Rasterizacija linije

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

Ispitivanje toka i skiciranje grafika funkcija

Π.Μ.. ΣΜΖΜΑΣΟ ΠΛΖΡΟΦΟΡΗΚΖ ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ. Υπνινγηζηηθή ζύγθξηζε ησλ αιγνξίζκσλ Heap Sort θαη Weak Heap Sort. Βαζηιεία Φνξκόδε Α.Μ.

3.1 Granična vrednost funkcije u tački

/* program count;*/ #include<stdio.h> main() {int i,j,k,n; int a[100],b[100],c[100]; scanf("%d%d",&n,&k); for (i=0;i<n;i++) scanf("%d",&a[i]);

Aritmetički i geometrijski niz

Δομές Δεδομένων και Αλγόριθμοι

PRIMJER 3. MATLAB filtdemo

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Linearna algebra 2 prvi kolokvij,

SISTEMI NELINEARNIH JEDNAČINA

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

Riješeni zadaci: Nizovi realnih brojeva

Pošto pretvaramo iz veće u manju mjernu jedinicu broj 2.5 množimo s 1000,

6 Polinomi Funkcija p : R R zadana formulom

Eliminacijski zadatak iz Matematike 1 za kemičare

Elektrotehnički fakultet univerziteta u Beogradu 16.maj Odsek za Softversko inžinjerstvo

IZVODI ZADACI (I deo)

( , 2. kolokvij)

Algoritmi zadaci za kontrolni

NOMENKLATURA ORGANSKIH SPOJEVA. Imenovanje aromatskih ugljikovodika

Sume kvadrata. mn = (ax + by) 2 + (ay bx) 2.

Algoritmi i strukture podataka (450)

Ĉetverokut - DOMAĆA ZADAĆA. Nakon odgledanih videa trebali biste biti u stanju samostalno riješiti sljedeće zadatke.

Osnovne teoreme diferencijalnog računa

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

Novi Sad god Broj 1 / 06 Veljko Milković Bulevar cara Lazara 56 Novi Sad. Izveštaj o merenju

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

numeričkih deskriptivnih mera.

Uvod u teoriju brojeva

Binarno stablo (BinaryTree)

41. Jednačine koje se svode na kvadratne

Obrada signala

Kaskadna kompenzacija SAU

Dijagonalizacija operatora

Elementi spektralne teorije matrica

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

POVRŠINA TANGENCIJALNO-TETIVNOG ČETVEROKUTA

RIJEŠENI ZADACI I TEORIJA IZ

Funkcija gustoće neprekidne slučajne varijable ima dva bitna svojstva: 1. Nenegativnost: f(x) 0, x R, 2. Normiranost: f(x)dx = 1.

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

2. Ako je funkcija f(x) parna onda se Fourierov red funkcije f(x) reducira na Fourierov kosinusni red. f(x) cos

Četrnaesto predavanje iz Teorije skupova

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA

Linearna algebra 2 prvi kolokvij,

Trigonometrijske nejednačine

APROKSIMACIJA FUNKCIJA

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

Matematička analiza 1 dodatni zadaci

Elektrotehnički fakultet univerziteta u Beogradu 17.maj Odsek za Softversko inžinjerstvo

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

Numerička matematika 2. kolokvij (1. srpnja 2009.)

Neka je a 3 x 3 + a 2 x 2 + a 1 x + a 0 = 0 algebarska jednadžba trećeg stupnja. Rješavanje ove jednadžbe sastoji se od nekoliko koraka.

1 Promjena baze vektora

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE

( , treći kolokvij) 3. Na dite lokalne ekstreme funkcije z = x 4 + y 4 2x 2 + 2y 2 3. (20 bodova)

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

Funkcije dviju varjabli (zadaci za vježbu)

Deformacije. Tenzor deformacija tenzor drugog reda. Simetrinost tenzora deformacija. 1. Duljinska deformacija ε. 1. Duljinska (normalna) deformacija ε

1. Duljinska (normalna) deformacija ε. 2. Kutna (posmina) deformacija γ. 3. Obujamska deformacija Θ

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

KONVEKSNI SKUPOVI. Definicije: potprostor, afin skup, konveksan skup, konveksan konus. 1/5. Back FullScr

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

Transcript:

Sortiranje prebrajanjem (Counting sort) i Radix Sort 15. siječnja 2016. Ante Mijoč

Uvod Teorem Ako je f(n) broj usporedbi u algoritmu za sortiranje temeljenom na usporedbama (eng. comparison-based sorting algorithm). Tada je f(n) (n log n). Tada je očito i vremenska složenost samog algoritma (n log n). Znamo da postoje algoritmi za sortiranje temeljeni na usporedbama čija je vremenska složenost u najgorem (Merge sort, Heapsort) i u prosječnom (Quicksort) (n log n). Tj. što se tiče takvih algoritama ne postoji bolji (do na konstantu).

Uvod Međutim sortovi koji su tema ove prezentacije imaju linearnu složenost. Naravno da bi to bilo uopće moguće, ne sortiramo uspoređivanjem. Potrebne su nam određene pretpostavke o ulazu (ne radi za svaki ulaz).

Sortiranje prebrojavanjem (Counting sort) Pretpostavljamo da je ulaz n integera u rasponu od 0 do m. A izlaz je sortiran niz. Koristimo i dva pomoćna niza, jedan duljine n, a drugi duljine m+1. Oznake: a-ulazni niz b-pomoćni niz u kojem sortiramo (duljine n) c-pomoćni niz za prebrojavanje (duljine m)

Pseudokod counting_sort (a, m) for k = 0 to m //postavi na nulu c(k) = 0; for i = 1 to n //prebroji c(a[i]) += 1 for k = 1 to m //sumiraj c(k) += c(k-1)

Pseudokod for i = n downto 1 //sortiraj b[c[a[i]] = a[i] c[a[i]] -= 1 for i = 1 to n //iskopiraj b u a a[i] = b[i]

m 7 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 1 0 0 1 0 0 0

0 1 0 1 1 0 0 0

1 1 0 1 1 0 0 0

1 2 0 1 1 0 0 0

1 2 0 1 1 0 0 1

1 2 0 1 1 0 0 1

1 3 0 1 1 0 0 1

1 3 3 1 1 0 0 1

1 3 3 4 1 0 0 1

1 3 3 4 5 0 0 1

1 3 3 4 5 5 0 1

1 3 3 4 5 5 5 1

1 3 3 4 5 5 5 6

1 3 3 4 5 5 5 6

Pseudokod (podsjetnik) for i = n downto 1 //sortiraj b[c[a[i]] = a[i] c[a[i]] -= 1 for i = 1 to n-1 //kopiraj b u a a[i] = b[i]

1 3 3 4 5 5 5 6 b[1] b[2] b[3] b[4] b[5] b[6] * * * * * 7

1 3 3 4 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] * * * * * 7

1 3 3 4 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] * * 1 * * 7

1 2 3 4 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] * * 1 * * 7

1 2 3 4 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 * 1 * * 7

0 2 3 4 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 * 1 * * 7

0 2 3 4 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 * 1 3 * 7

0 2 3 3 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 * 1 3 * 7

0 2 3 3 5 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 * 1 3 4 7

0 2 3 3 4 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 * 1 3 4 7

0 2 3 3 4 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 1 1 3 4 7

0 1 3 3 4 5 5 5 b[1] b[2] b[3] b[4] b[5] b[6] 0 1 1 3 4 7

b[1] b[2] b[3] b[4] b[5] b[6] 0 1 1 3 4 7 0 1 1 3 4 7

O sortiranju prebrojavanjem Vremenska složenost algoritma je θ(m+n). Jer uvijek ima točno 2m+4n elementarnih operacija (za svaki dopušteni ulaz). Za razliku od algoritama za sortiranje temeljenim na usporedbama, sortirenje prebrojavanjem nije inplace sort. Tj. zahtjeva dodatnu memoriju za sortiranje. Prostorna složenost je θ(m+n). Primjetimo da ukoliko m n ili m (n) da su pripadne složenosti θ(n). Algoritam je korektan/potpun i stabilan (eng. stable).

Radix sort Pretpostavljamo da je ulaz n k-znamenkastih brojeva u bazi m. A izlaz je sortiran niz. Kao subrutinu koristimo sortiranje prebrojavanjem. Oznake: a-ulazni niz b-pomoćni niz u kojem sortiramo (duljine n) c-pomoćni niz za prebrojavanje (duljine m)

Pseudokod radex_sort(a, k) for i = 1 to k counting_sort(a, m-1) // kljuc (key) je i-ta najmanje znacajna znamenka

Ulaz 13103 26440 16342 20101 801 Nakon prvog koraka 26440 20101 801 16342 13103

Nakon drugog koraka 20101 801 13103 26440 16342 Nakon trećeg koraka 20101 13103 16342 26440 801

Nakon četvrtog koraka 20101 801 13103 16342 26440 Nakon petog (zadnjeg) koraka 801 13103 16342 20101 26440

O radix sortu Vremenska složenost algoritma je θ(km+kn). Oznake: n - duljina niza k - max broj znamenki m- baza Prostorna složenost je θ(m+n). Ako su m konstantan ili (n) i k konstantni tada su pripadne složenosti θ(n). Algoritam je korektan/potpun stabilan (eng. stable).

Napomene U Radix sortu umjesto sortiranja prebrojavanjem (Counting sort) možemo koristiti bilo koji drugi stabilan (stable) sort (npr. Bubble sort, Insertion sort, Merge sort). Ako nam nije zadana maksimalna vrijednost jednim prolazom kroz niz je možemo pronaći. To očito neće utjecati na složenost. Prednost nad algoritmima za sortiranje temeljenim na usporebama je linearna složenost, a nedostaci su potreba za dodatnom memorijom.

Testiranje Što se testiranja tiče uspoređivati ćemo vremena izvođenja implementacija Counting i Radix sorta međusobno i sa Quick sortom. Ulaz su tekstualne datoteke s generiranim nizovima integera sa stranice www. random.org

Counting sort n\m 9 99 999 9999 100 0.092 0.079 0.094 0.203 1000 0.375 0.425 0.458 0.547 10000 3.236 3.567 3.564 4.052

Radex sort n\m 9 99 999 9999 100 0.106 0.093 0.094 0.125 1000 0.396 0.469 0.532 0.625 10000 3.496 4.241 4.967 5.764

Quick sort n\m 9 99 999 9999 100 0.090 0.125 0.094 0.078 1000 0.588 0.469 0.515 0.547 10000 23.044 6.205 4.942 5.234

Literatura [1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Introduction to Algorithms, 2000. [2] Counting sort, https://en.wikipedia.org/wiki/counting_sort (5.1.2016.) [3] Radex sort, https://en.wikipedia.org/wiki/radix_sort (5.1.2016.) [4] Counting sort and Radex sort, http://www.opendatastructures.org/odsjava/11_2_counting_sort_radix_so.html (5.1.2016.)