• Tidak ada hasil yang ditemukan

IS1313-06 Algoritma Sorting & Searching (Java)

N/A
N/A
Protected

Academic year: 2018

Membagikan "IS1313-06 Algoritma Sorting & Searching (Java)"

Copied!
17
0
0

Teks penuh

(1)

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

(2)

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]

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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.

(9)

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

(10)

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

(11)

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.

(12)

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

(13)

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

(14)

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)

(15)

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

(16)

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

(17)

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

Referensi

Dokumen terkait

dilihat pada Tabel 4.2 bahwa ekstrak lengkuas konsentrasi 10% berpengaruh terhadap penurunan jumlah bakteri ikan patin, angka kuman diperoleh hasil 2,01 x 10 3 koloni/g

Selepas proses penginterpretasian makna dilakukan, maka akan terhasil satu rantau konsepsi emosi KASIH yang memerikan konsep leksikal atau makna terhadap kata atau

Metode yang digunakan sebagai pengumpulan data dalam penelitian ini adalah metode simak yaitu dengan cara menyimak penggunaan bahasa dengan cara mencari data-data

rangka m kyat Daerah nganggaran berdasarkan rubahan ket tang Kedudu Dewan Perw uan Peratura okoler dan K yat Daerah P mendorong h Provinsi nnya dalam n Peraturan tiga atas

Di dalam hubungan antara hukum dengan perilaku sosial, terdapat adanya unsur pervasive socialli (penyerapan sosial), artinya kepatuhan dan ketidakpatuhan terhadap hukum

Sementara itu dampak investasi pemerintah ke sektor riil, meskipun meningkat dibandingkan dengan periode sebelumnya, namun realisasi pengeluaran investasi di awal 2007 baru

Sedangkan menurut Levey dan Loomba (1973), Pelayanan Kesehatan adalah upaya yang diselenggarakan sendiri/secara bersama-sama dalam suatu organisasi untuk memelihara

Bab ini menjelaskan hasil penelitian hubungan antara quick of blood dengan penurunan nilai ureum dan kreatinin pada pasien CKD yang menjalani hemodialisis di RSUD