1 Ir. Roedi Goernida, MT.
(roedig@yahoo.com)
Materi kuliah
ALGORITMA
PENGURUTAN & PENCARIAN
Program Studi Sistem Informasi – Fakultas Rekayasa Industri Institut Teknologi Telkom
Bandung
2011
2
Pengurutan internal
dilakukan terhadap sekumpulan data yang
disimpan dalam media internal komputer
yang dapat diakses secara langsung
pada setiap elemennya.
Pengurutan eksternal
dilakukan terhadap data yang disimpan di
dalam memori sekunder dan digunakan
pada data yang cukup besar.
Pengelompokan Pengurutan
3
Metoda Pengurutan
Pengurutan didasarkan kepada:
● Perbandingan (comparison-based sortingcomparison-based sorting) )
Bubble sort, exchange sort
● Prioritas (priority queue sortingpriority queue sorting) )
Selection sort, heap sort (menggunakan tree)
● Penyisipan & penjagaan terurut (insert & keep insert & keep
sorted
sorted )
Insertion sort, tree sort
● Pembagian & penguasaan (devide and conquerdevide and conquer) Quick sort, merge sort
● Berkurang menurun (diminishing increment sort diminishing increment sort ) Shell sort (pengembangan insertion)
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 2
4
Bubble sorting
(1/2)● Merupakan proses pengurutan secara bergerak atau berpindah ke posisi yang tepat
diibaratkan gelembung yang keluar dari sebuah gelas bersoda.
● Mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.`
● Pengurutan Ascending:
Jika elemen sekarang lebih besar dari elemen berikutnya, maka kedua elemen tersebut ditukar.
A[1] A[2] A[3] A[4] … A[n]
5
● Pengurutan Descending:
Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar.
D[1] D[2] D[3] D[4] … D[n] ● Algoritma ini seolah-olah menggeser satu per satu
elemen dari kanan ke kiri atau sebaliknya
● Ketika satu proses telah selesai, maka bubble sort
akan mengulangi proses tersebut, dan seterusnya sampai dengan iterasi sebanyak n-1.
● Proses pengurutan berakhir jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Bubble sorting
(2/2)Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 4
6
7
9 13 16 67 25 38
9 13 16 67 25 38
9 13 16 25 67 38
9 13 16 25 67 38
9 13 16 25 67 38
9 13 16 25 67 38
9 13 16 25 67 38
9 13 16 25 38 67
9 13 16 25 38 67
9 13 16 25 38 67
9 13 16 25 38 67
9 13 16 25 38 67
Proses 4
Proses 5
Ilustrasi
(2/2)Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 6
8
Algoritma Bubble sort
ba := n
i
:= 1
if A[i] < A[i+1] then
temp
:= A[i]
A[i]
:= A[i+1]
A[i+1] := temp
9
Selection sorting
● Merupakan kombinasi antara sorting & searching.
● Cara pengurutannya yaitu membandingkan elemen sekarang dengan elemen berikutnya sampai elemen yang terakhir.
● Untuk setiap proses akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar untuk dipertukarkan ke posisi yang tepat.
● Selama proses berlangsung, pembandingan dan pengubahan hanya dilakukan pada index pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 8
10
Penukaran data idx-0 (13) idx-4 (9) 13 67 38 25 9 30
Penukaran data idx-1 (67) idx-4 (13)
9 67 38 25 13 30
11
Penukaran data idx-2 (38) idx-3 (25)
9 13 38 25 67 30
Penukaran data idx-3 (38) idx-5 (30)
9 13 25 30 67 38
Penukaran data idx-4 (67) idx-5 (38)
9 13 25 30 67 38
0 1 2 3 4 5
Ilustrasi
(2/2)Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 10
12
13
Insertion sorting
● Dapat digambarkan seperti melakukan pengurutan kartu,
dimana selembar demi selembar kartu diambil dan kemudian disisipkan (insert) ke tempat yang seharusnya.
● Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (di-insert) pada posisi yang seharusnya.
● Pada penyisipan elemen tersebut, maka elemen-elemen
lain akan bergeser ke belakang
● Keuntungan:
- Implementasi yang sederhana.
- Efesien untuk ukuran data yang kecil.
- langsung melakukan pengurutan ketika ada data baru.
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 12
14
15
Algoritma insertion sorting
for i ← 2 to n do y ← A[i]
j ← i – 1 found ← false
while j i ← i and (not found) do if y < A[j] then
A[j + 1] ← A[j] j ← j – 1
else
found ← true endif
endwhile
A[j + 1] ← y endfor
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 14
16
Shell sorting
●
Merupakan pengurutan yang paling efesien &
memiliki algoritma yang kompleksitas, tetapi
sederhana.
●
Pengurutan dengan metoda perbandingan dan
pertukaran.
●
Membandingkan
jarak
elemen
yang
telah
ditentukan dan selanjutnya dipertukarkan.
●
Penukaran dilakukan terhadap sepasang elemen
untuk mencapai keadaan urut.
●
Melakukan
pass
atau
traversal
berkali-kali & setiap
kali
pass
mengurutkan sejumlah nilai yang sama
dengan ukuran set menggunakan insertion set.
17
jarak ← n div 2
while jarak > 0 do
for I ← 1 to n – jarak do
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 16
18
19
Penggabungan tabel
Penggabungan secara terurut dilakukan dengan
memeriksa elemen isi tabel-1 & tabel-2 yang
selanjutnya dibandingkan agar isi tabel-3 (tabel
baru) menjadi terurut.
1 13 24 2 15 27 30
1 13 24 2 15 27 30
1 13 24 2 15 27 30
1 13 24 2 15 27 30
1 13 24 2 15 27 30
1 13 24 2 15 27 30
1 13 24 2 15 27 30
1
1 2
1 2 13
1 2 13 15
1 2 13 15 24
1 2 13 15 24 27
1 2 13 15 24 27 30
T1 T2 T3
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 18
20
Waktu (detik)
Bubble Selection Insertion Shell
5000 0.52 0.22 0.17 0.02
7000 0.98 0.44 0.34 0.02 9000 1.66 0.72 0.56 0.02 11000 2.47 1.05 0.83 0.03 13000 3.50 1.47 1.17 0.05 15000 4.55 1.97 1.55 0.05
N
Perbandingan waktu sorting
21
Pencarian
● Data seringkali dibutuhkan dalam pembacaan kembali
informasi (retrieval information).
● Pencarian/searching cara untuk mendapat data
yang diinginkan dengan cara menelusuri data-data tersebut.
● Pencarian elemen data pada Java terbagi atas:
Linier / sequential searching
melakukan pengujian setiap item.
digunakan pada data yang masih acak & berurut.
Binary searching
dengan membagi dua data: (N+1) div 2 digunakan pada data yang berurut
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 20
22
Pencarian data pada array
● Tempat pencarian data dapat berupa array dalam
memori, bisa juga pada file pada external storage
● Searching terbagi atas:
Internal searching – algoritma pencarian yang dilakukan dalam memori komputer.
External searching – algoritma pencarian yang melibatkan external media dan menambahkan ke memori utama.
23
Pencarian sequential
Proses
pencarian
dilakukan
dengan
membandingkan setiap elemen larik satu
per satu secara beruntun, mulai dari elemen
pertama
sampai
elemen
yang
dicari
ditemukan atau seluruh elemen sudah
diperiksa serta dapat dilakukan dalam
kondisi data apapun.
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 22
24 Nilai yang dicari: 28
Elemen yang diperiksa : 52 87 93 28 Index : 4
Nilai yang dicari: 52
Elemen yang diperiksa : 52 Index : 1
Nilai yang dicari: 55
Elemen yang diperiksa : 52 87 93 28 76 21 Index : 0
Algoritma Pencarian sequential
(1/2)52 87 93 28 76 21
1 2 3 4 5 6
25
Algoritma Pencarian sequential
(2/2)1. begin
2. index 1
3. while index <= n
4. if key(cari) = key(index)
5. result index 6. goto 11
7. end if
8. index index + 1 9. end while
10. hasil not found 11. end
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 24
26
Pencarian Biner (Binary Search) dilakukan untuk :
● memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
● Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut.
Pencarian biner
27
81 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Low High
81 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Low Middle High
Elemen yang dicari 18
Langkah 1:
Low = 1 dan High = 8
Elemen tengah Middle = (1+8) div 2 = 9 div 2 = 4
Langkah 2:
Array[4] = X ? (18 = 18) true X ditemukan dan pencarian dihentikan.
Algoritma Pencarian biner
(1/3)Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 26
28
81 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Low High
Elemen yang dicari 16
Iterasi 1:
Langkah 1:
Low = 1 dan High = 8
Elemen tengah (Middle) = (1+8) div 2 = 9 div 2 = 4
Langkah 2:
Array[4] = X ? (18 = 16) FALSE, sehingga diputuskan pencarian di kiri atau dikanan. Jika Array[4] > 16 ?, (18 > 16) TRUE, lakukan pencarian disebelah kanan dengan Low = middle+1 ( 4+1 = 5) dan High = 8.
Algoritma Pencarian biner
(2/3)29
16 13 10 7
5 6 7 8
Low Middle High
Algoritma Pencarian biner
(3/3)Iterasi 2:
Langkah 1:
Low = 5 dan High=8
Elemen tengah Middle = (5+8) div 2 = 13 div 2 = 6 Langkah 2:
Array[6] = X ? (13 = 16) FALSE untuk memutuskan pencarian di kiri atau di kanan. Jika Larik[6] > 16 ?, (13 > 16) FALSE,
lakukan pencarian di sebelah KIRI --> low = 5 (TETAP) dan High = middle-1 = 5
Iterasi 3:
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 28
30
Algoritma Pencarian biner
(3/3)1. Mulai 2. Awal 1 3. Akhir n
4. while Awal <= Akhir
5. Tengah (Awal + Akhir) / 2 6. if Kunci(Cari) = Kunci(Tengah) 7. Hasil Tengah
8. goto 15
9. else if Kunci(Cari) > Kunci(Tengah) 10. Awal Tengah + 1
11. else Akhir Tengah - 1 12. end if
13. end while
14. Hasil tidak ketemu 15. Selesai
31
Proses pencarian dengan Sentinel selalu
menjamin bahwa elemen data yang dicari (x)
pasti berhasil ditemukan.
Untuk menyimpulkan apakah x ditemukan pada
elemen sentinel atau bukan, yaitu dengan
melihat nilai idx.
Jika idx = n+1, x ditemukan pada sentinel
x tidak terdapat di dalam array semula
(sebelum penambahan sentinel).
jika idx < n +1, x ditemukan sebelum
sentinel
x sudah ada di dalam larik L
semula.
Pencarian dengan Sentinel
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 30
32
52 87 93 28 76 21
1 2 3 4 5 6
21 6
Elemen data dicari 35 & 28:
Untuk Sentinel
52 87 93 28 76 21
1 2 3 4 5 6
35
7
Di isi data sentinel sesuai dengan elemen yang dicari:
● 35 ditemukan pada elemen ke-n+1. Sentinel otomatis sudah
ditambahkan ke dalam larik. Ukuran larik menjadi = 7.
● 28 ditemukan pada elemen ke-4. Sentinel batal menjadi elemen
yang ditambahkan ke dalam larik. Ukuran larik tetap 6.
Ilustrasi Pencarian Sentinel
33
Algoritma Pencarian Sentinel
(1/2)1. Mulai
2. L[n + 1] ← ← ← ← x
3. i ←←←← 1
4. while (L[i] x) do
5. i ←←←← i + 1 6. endwhile
7. if idx = n + 1 then
8. idx ←←←← -1 9. else
10. idx ←←←← i 11. Endif
12. Selesai
Hand-out: Algoritma Sorting & Searching IS1313 - 06 Hal. 32
34