Sorting and Searching
Sorting and Searching
Sorting and Searching
Oleh
I GEDE BENDESA SUBAWA
SEMESTER I
1. SORTING
A. Counting Sort
a.1 Definisi
Counting Sort merupakan algoritma pengurutan yang efektif dan
efisien yang melakukan pengurutan dengan ide dasar meletakkan elemen
pada posisi yang benar, di mana penghitungan posisi yang benar dilakukan
dengan menghitung (counting) elemen-elemen dengan nilai lebih kecil
atau sama dengan elemen tersebut. Counting Sort bisa juga disebut
pengurutan dengan pencacahan karena elemen yang akan kita urutkan
akan dicacah terlebih dahulu kemudian diurutkan.
a.2. Ilustrasi
Berikut
terdapat
contoh
kasus
yang
harus
dipecahkan
T.awal
1 1
2 5
3 5
4 3
5 7
6 9
7 2
8 7
9 9
10 4
T.hasil
1 1
2 2
3 3
4 4
5 5
6 5
7 7
8 7
9 9
10 9
Keterangan:
-
Tabel akhir merupakan tabel yang berisikan elemen pada tabel awal
yang telah diurut.
B. Bubble Sort
b.1 Definisi
Bubble Sort merupakan cara pengurutan yang sederhana. Diberi
nama bubble karena proses pengurutan secara berangsur-angsur berpindah
dari posisinya, entah itu ke kanan ataupun ke kiri sesuai dengan jenis
pengurutannya, ascending atau descending.
b.2 Illustrasi
Contoh illustrasi terhadap larik dengan banyak data 6 elemen
kemudian akan diurutkan menggunakan bubble sort secara ascending.
Elemen tersebut sebagai berikut 50, 30, 20, 40, 70, 60.
Illustrasi bubble sort (elemen dengan warna kuning berate harus ditukar):
Iterasi 1
50
50
50
30
30
30
Iterasi 2
20
60
70
40
50
30
20
40
20
60
40
70
50
20
30
40
20
40
60
70
20
50
30
40
Iterasi 3
20
50
20
30
(selesai)
30
50
40
40
20
20
60
60
60
70
70
70
30
50
40
60
70
60
70
60
70
30
60
70
40
50
Iterasi
b.3 Algoritma
Procedure BubbleSort(I/O T: array[1..N] of Integer, I N:
Integer);
{mengurutkan elemen Tabel T sejumlah N secara ascending
menggunakan Bubble sort}
Asumsi : nilai N diketahui
Variable
i: integer;
temp: integer;
swapped: Boolean;
Algoritma
do
swapped:= false;
for i:=N downto 1 do
if T[i]<=T[i-1] then
temp:= T[i];
T[i]:= T[i-1];
T[i-1]:= temp;
swapped:=True;
Endif
Endfor
While swapped;
C. Bucket Sort
c.1 Definisi
Bucket Sort atau sering disebut dengan Bin Sort adalah algoritma
untuk mengurutkan data dengan cara membagi data menjadi range data atau
bucket. Di mana masing-masing range data tersebut akan diurutkan menggunakan
algoritma pengurutan lainnya.
c.2 Illustrasi
Kita akan mencoba mengurutkan data berikut menggunakan bucket
sort dan counting sort. Data awal : 15, 2, 30, 45, 87, 60, 65, 90, 3, 9.
Pengelompokan dengan bucket, misalnya kita menggunakan 3 bucket
dengan range yang sama sehingga jadi seperti berikut.
9
12
10
3, 2, 4
5, 8, 7
Bucket 1
(Range 1-4)
Bucket2
(Range 5-8)
9, 12, 9,
10
Bucket 3
(Range 9-12)
5, 7, 8
9, 9, 10,
12
10
12
c.3 Algoritma
Procedure BucketSort(I/O T: array[1..N] of integer; Bucket:
array[1..k, 1..n] of integer);
{mengurutkan tabel T[1..N] dimana range nilainya [1..n] dan
bucket yang dibuat [1..k]
Asumsi: Nilai N(jumlah elemen), n(range/rentang nilai), k
(jumlah bucket) diketahui.
Variable
i, j, m : integer;
index : array [1..k] of integer;
bucket: array [1..k, 1..n] of integer;
Algoritma
For i:=1 to k do
For j:=1 to n do
Bucket[i,j]:= 0;
Endfor
Endfor
For i:=1 to k do
index[i] :=0;
endfor
{inisiasi bucket}
for i:=1 to N do
{pengisisan bucket}
if(T[i] mod (n div k) =0 and (T[i]>=(n div k))then
m= (T[i]div(n div k));
else
m= (T[i]div(n div k))+1;
endif
index[m]:=index[m]+1;
bucket[m,index[m]]:=T[j];
endfor
for i:=1 to k do
proses counting sort; {pengurutan menggunakan counting}
endfor;
{penggabungan bucket}
m:=1;
For i:=1 to k do
For j:=1 to index[i] do
T[m] := bucket[I,j];
m:=m+1;
Endfor
Endfor
pemilihan
proses
kompleksitas waktu
pengurutan
masing-masing
bucket
mempengaruhi
2. SEARCHING
A. Breadth First Search
Breadth First Search (BFS) merupakan suatu teknik untuk menemukan
solusi dengan cara melakukan pencarian per level tree dari kiri. Jika solusi tidak
ditemukan level ke-n maka pencarian akan dilanjutkan ke level n+1 mulai dari
node paling kiri juga, begitu seterusnya hingga solusi ditemukan.
Ilustrasi pencarian menggunakan BFS:
1
dari node sebelah kiri di tiap levelnya. Jika tidak ditemukan solusi hingga node
paling dalam maka di lanjutkan pengecekan pada node sebelah kananya. Apabila
solusi tidak terdapat pada node terdalam maka pencarian akan dilakukan pada
level sebelumnya dan begitu seterusnya hingga solusi dapat ditemukan.
Ilustrasi pencarian menngunakan DFS:
1
F
H
G
I
1
6
5
1
4
F
Pertanyaan:
Tentukan jarak terpendek dari Node A ke Node B, C, D, E, F
menggunakan metode Djikstra.
Pembahasan:
Algoritma Djikstra merupakan sebuah algoritma yang digunakan untuk
menentukan rute terpendek berbasis perhitungan dari satu node ke node yang
lainnya. Dengan kata lain algoritma ini akan membanding jarak terpendek dari
setiap jalur yang harus dilalui.
1. Jarak Node A ke B
Karena Node A hanya memiliki 1 jalur yaitu A-C maka kita akan melewati
jalur tersebut dengan nilai 6. Kemudian dari node C memiliki 3 jalur
keluar dan salah satunya lansung menuju node B jadi kita menggunakan
jalur C-B dengan nilai 3.
Jadi jarak terpendek dari Node A ke B menggunakan metode djikstra
adalah dengan melalui jalur A-C-B dengan nilai 6+3=9.
2. Jarak Node A ke C
Karena dari Node A hanya terdapat satu jalur lansung ke Node C maka
jalur A-C merupakan jalur terpendeknya dengan nilai 6.
3. Jarak Node A ke D
Node A hanya memiliki satu jalur keluar yaitu jalur A-C dengan nilai 6,
kemudian Node C memiliki 3 jalur keluar yaitu C-B dengan nilai 3, C-F
dengan nilai 5, dan C-E dengan nilai 1. Maka djikstra akan memilih jalur
terpendek yaitu C-E dengan nilai 1. Kemudian Node E memiliki 2 jalur
keluar selain E-C (jalur balik) adalah E-B dengan nilai 6 dan E-F dengan
nilai 4. Maka djikstra akan memilih jalur terpendek yaitu E-F dengan nilai
4. Kemudian F memiliki jalur lansung menuju D jadi djikstra akan
menggunakan jalur F-D dengan nilai 2.
Jadi jarak terpendek dari Node A ke D menggunakan metode Djikstra
adalah melalui jalur A-C-E-F-D dengan nilai 6+1+4+2 = 13.
4. Jarak Node A ke E
Node A hanya memiliki satu jalur keluar yaitu jalur A-C dengan nilai 6,
kemudian Node C memiliki jalur lansung ke node E menggunakan jalur CE dengan nilai 1.
a. BFS
0
1. Pencarian
menggunakan
BFS
dimulai
dari
memasukkan simpul ujung (0) ke dalam antrian.
3