Distribution Sort Asli Kelompok 6

Post on 22-Dec-2015

20 views 1 download

description

Alprog

Transcript of Distribution Sort Asli Kelompok 6

DISTRIBUTION SORT

KELOMPOK 6

1. AHMADAN BAIHAQI SAMBORO

2. ANNISA DIAN ISLAMI

3. BILLY ANUGRAH

4. BINAR TAMARA PUTRI

5. GERALDY WIBIANSYAH PUTRA

6. RAFIKA DHIAN KANITA

7. FERINA YULI PUTRI

Definisi Distribution Sort Semacam Distribusi mengacu pada setiap algoritma

pengurutan dimana data didistribusikan dari masukan

mereka ke beberapa struktur perantara yang

kemudian dikumpulkan dan ditempatkan pada

output. Distribusi algoritma pengurutan dapat

digunakan pada prosesor tunggal, atau mereka

dapat menjadi algoritma terdistribusi, di mana subset

individu secara terpisah diurutkan pada prosesor

yang berbeda, kemudian digabungkan.

Distribution sort

Ada beberapa macam dari distribution sort, yaitu :

American flag sort

Bead sort

Bucket sort

Burstsort

Counting sort

Pigeonhole sort

Proxmap sort

Radix sort

Flashsort

Adapun, bahasan utamanya

adalah :

Counting sort

Bucket sort

Radix sort

A.COUNTING SORT

Counting sort merupakan algoritma pengurutan

yang dapat dilakukan apabila data dapat

dinyatakan sebagai bilangan yang menyatakan

besarannya.

Rentang nilai bilangan itu juga tidak boleh terlalu

besar, karena akan dibuat array yang besarnya

sama dengan rentangnya. Biasanya counting

sort hanya digunakan untuk mengurutkan

angka.

Keunggulan Algoritma Counting Sort

Keunggulan dari algoritma counting sort

adalah dapat mengurutkan dengan waktu

yang lebih singkat, karena tidak

membandingkan dengan elemen lain.

Kelemahan Algoritma Counting Sort

Kelemahan algoritma counting sort adalah

menggunakan array yang terlalu banyak.

Ide Dasar Counting Sort

Untuk dapat melakukan pengurutan

dengan counting sort rentang nilai untuk

kumpulan data yang akan diurutkan harus

diketahui, katakanlah k.

Ide dasar dari counting sort adalah

menentukan, untuk setiap elemen x, jumlah

elemen yang lebih kecil daripada x, yang

kemudian informasi ini digunakan untuk

menentukan posisi x.

Contoh sederhana saja, jika terdapat

12 elemen yang lebih kecil daripada x,

maka x akan mendapatkan posisinya di

posisi 13.

Tentu saja, sedikit modifikasi harus

dilakukan agar metode ini dapat

menangani kasus di mana terdapat

elemen-elemen lain yang nilainya sama

dengan x.

Di mana tentu saja kita tidak dapat

menempatkan semua elemen yang nilainya

sama dengan x di posisi yangsama.

Algoritma Counting Sort

Misalkan terdapat N bilangan, yaitu a1, a2, ...,

aN. Setiap bilangan itu berada di antara 1

sampai K. Cara pengurutannya adalah:

Buat tabel frekuensi yang besarnya K,

misalnya tabel direpresentasikan sebagai

array F.

Untuk setiap ai, tambahkan F[ai] dengan 1.

Lakukan iterasi pada array F. Untuk setiap i,

yang mana 1 ≤ i ≤ K, cetak i sebanyak F[i] kali.

Perhatikan contoh berikut! Misalkan K = 10

dan bilangan yang ingin diurutkan adalah

1, 4, 2, 3, 4, 8, 4, 5, 1, 5, 1, 5, 3, 2

Nilai (i) Frekuensi (F[i])

1 3

2 2

3 2

4 3

5 3

6 0

7 0

8 1

9 0

10 0

Setelah bilangan-bilangan itu dihitung frekuensinya, tabel frekuensinya adalah:

Lalu iterasi mulai dari i = 1 sampai i = 10,

untuk setiap i, cetak i sebanyak F[i] kali.

Hasilnya adalah:

1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 8

Pseudecodenya adalah : sort(data[], N, K)

// buat array F yang ukurannya bisa menampung sampai dengan elemen K, isi nilai awal elemennya dengan 0

for i <- 1 .. N

tambahkan F[data[i]] dengan 1

// buat array temp sebagai penampungan sementara

p <- 1

for i <- 1 .. K

for j <- 1 .. F[i]

Temp[p] <- i

p <- p + 1

// salin temp ke data

for i <- 1 .. N

data[i] = temp[i]

B. Bucket Sort Bucket Sort adalah algoritma pengurutan yang mengelompokan deret angka menjadi beberapa deret yang kemudian dianalogikan menjadi ember.

Setiap angka dalam deret yang akan diurutkan diambil satu persatu dan dimasukan ke ember yang memenuhi syarat.

Embernya sudah harus urut dari mulai ember yang terkecil. Setelah itu, angka-angka diurutkan dalam masing-masing ember yang paling kecil terebuh dahulu.

Berikut ini analoginya

Pseudocodenya :

(Assume all numbers in the range 0 to M - 1 Create a d dimensional array of lists (or arrays) y

for i = 0 to n - 1 do

Append x[i] to y[x[i]=(M=d)]

end for

Replace x by y[id] for i = 0 to p - 1 do

if i == id then

Transmit y[i] to processor i

Receive data from processor i and append to x end if end for

Perform a local sort on x

C. RADIX SORT Definisi :

Radix Sort merupakan salah satu algoritma Non-Comparasion Sort (pengurutan tanpa pembandingan).

Proses yang dilakukan dalam metode ini adalah mengklasifikasikan/menyelesaikan data sesuai dengan kategori terurut yang tertentu, dan tiap kategori dilakukan pengklasifikasian lagi, dan seterusnya sesuai kebutuhan, kemudian subkategori-subkategori atau bagian-bagian dari kategori tersebut digabungkan kembali.

Sebelum memulai membahas lebih lanjut, akan lebih baik jika diadakan penyamaan persepsi mengenai istilah radix, dalam makalah ini radix bermakna harafiah posisi dalam angka [1]. Di mana sederhananya, dalam representasi desimal, radix adalah digitnya.

Ide dasar dari metode Radix sort ini adalah mengkategorikan data-data menjadi subkumpulan subkumpulan data sesuai dengan nilai radix-nya, mengkonkatenasinya, kemudian mengkategorikannya kembali berdasar nilai radix lainnya.

SIMULATION

173 256 548 326 753 478 222 144 721 875

0 1 2 3 4 5 6 7 8 9

173

753

256

326

548

478

222 144 721 875

18

SIMULASI

SIMULATION

0 1 2 3 4 6 7 8 9

173

753

256

326

548

478

222 144 721 875

0 1 2 3 4 5 6 7 8 9

173 753

256

326

548

478

222

144 721

875

19

SIMULATION

0 1 2 3 4 5 6 7 8 9

173 753 256

326 548 478 222 144 721 875

0 1 2 3 4 5 6 7 8 9

173 753

256

326

548

478

222

144 721

875

20

SIMULATION

0 1 2 3 4 5 6 7 8 9

173 753 256

326 548 478 222 144 721 875

144 173 222 256 326 478 548 721 753 875

21

ALGORITHM

1.Keep an array count of size m(Maximum range of output)

2.Repeat following steps till input is exhausted

a) Read input number as x.

b) Increment count [x] by 1

3.Repeat the following for i=0 to m

a) Assign j to zero

b) While count [ i ] is not equal to zero do

i) a[ j ] = I and increment j

ii) Decrement count[ i ]

4.Return the sorted elements stored in array a.

TERIMAKASIH