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
Top Related