bab 8 sorting searching

11
Bab 8 – Sorting dan Searching___________________ Modul Praktikum Struktur Data – IT045329 53 BAB 8 SORTING DAN SEARCHING TUJUAN PRAKTIKUM 1. Praktikan dapat memilih teknik sorting mana yang sesuai serta dapat menggunakan teknik searching dalam mencari elemen pada suatu data. 2. Praktikan diharapkan dapat mengenal jenis-jenis metode sorting dan searching, serta mampu menerapkannya didalam sebuah program sederhana. TEORI PENUNJANG 8.1. Metode Sorting Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan : - Ascending (Naik). - Descending (Turun). Contoh : Data : Array [1..6] of Byte = (22, 10, 15, 3, 8, 2); Data Acak : 22 10 15 3 8 2 Terurut Ascending : 2 3 8 10 15 22 Terurut Descending : 22 15 10 8 3 2 Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara/metode.

Upload: robbie-akachopa-season-ramadhan

Post on 19-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

a

TRANSCRIPT

Page 1: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

53

BAB 8

SORTING DAN SEARCHING

TUJUAN PRAKTIKUM

1. Praktikan dapat memilih teknik sorting mana yang sesuai serta dapat

menggunakan teknik searching dalam mencari elemen pada suatu data.

2. Praktikan diharapkan dapat mengenal jenis-jenis metode sorting dan

searching, serta mampu menerapkannya didalam sebuah program

sederhana.

TEORI PENUNJANG

8.1. Metode Sorting

Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang

sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut

suatu aturan tertentu. Sorting yang kita terapkan menggunakan tipe data array agar

pemahaman serta pengimplementasiannya lebih mudah. Pada umumnya terdapat

dua jenis pengurutan :

- Ascending (Naik).

- Descending (Turun).

Contoh :

Data : Array [1..6] of Byte = (22, 10, 15, 3, 8, 2);

Data Acak : 22 10 15 3 8 2

Terurut Ascending : 2 3 8 10 15 22

Terurut Descending : 22 15 10 8 3 2

Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam

cara/metode.

Page 2: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

54

Beberapa metode yang sudah umum digunakan diantaranya adalah :

1. Bubble / Exchange Sort

2. Selection Sort.

3. Shell Sort.

4. Quick Sort.

Metode Pengurutan Data

� Pengurutan berdasarkan perbandingan (comparison-based sorting)

• Bubble sort, exchange sort

� Pengurutan berdasarkan prioritas (priority queue sorting method)

• Selection sort, heap sort

� Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep

sorted method)

• Insertion sort, tree sort

� Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer

method)

• Quick sort, merge sort

� Pengurutan berkurang menurun (diminishing increment sort method)

• Shell sort

8.2. Bubble/Exchange Sort

Metode ini merupakan metode yang paling sederhana dan paling tidak efisien,

karena memerlukan waktu yang relatif lebih lama dibandingkan dengan metode-

metode yang lainnya. Konsep dasar dari Bubble sort ialah membandingkan

elemen yang sekarang degan elemen yang berikutnya, jika elemen sekarang >

elemen berikutnya (untuk ascending), maka dilakukan proses penukaran. Proses

sorting dapat dimulai dari data awal atau data akhir. Contoh dari proses Sorting

dengan menggunakan metode Bubble Sort :

Page 3: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

55

Tabel 8.1 Contoh Sorting dengan Bubble Sort

Iterasi

Ke A[1] A[2] A[3] A[4] A[5] A[6]

Awal 22 10 15 3 2 8

1 10 22 15 3 2 8

10 15 22 3 2 8

10 15 3 22 2 8

10 15 3 2 22 8

10 15 3 2 8 22

2 10 15 3 2 8 22

10 3 15 2 8 22

10 3 2 15 8 22

10 3 2 8 15 22

10 3 2 8 15 22

3 3 10 2 8 15 22

3 2 10 8 15 22

3 2 8 10 15 22

3 2 8 10 15 22

3 2 8 10 15 22

4 2 3 8 10 15 22

2 3 8 10 15 22

2 3 8 10 15 22

2 3 8 10 15 22

2 3 8 10 15 22

5 2 3 8 10 15 22

2 3 8 10 15 22

2 3 8 10 15 22

2 3 8 10 15 22

2 3 8 10 15 22

Akhir 2 3 8 10 15 22

Di sini terlihat ketidakefisienan dari bubble sort yaitu harus menyelesaikan

JumMax –1 dari data. Sedangkan jika kita melihat dari tabel diatas pada iterasi ke

empat saja data sudah terurut dan seharusnya pada saat itu proses sudah berhenti,

tapi dengan bubble sort proses harus dilakukan sampai looping selesai.

Pada seluruh prosedur yang menggunakan metode sorting pasti memerlukan

prosedur tambahan tukar data (Swap) untuk menukarkan dua buah elemen dalam

data. Berikut ini merupakan prosedur untuk menukarkan dua buah data.

Page 4: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

56

Procedure SWAP(Var A,B : Char);

Var Temp : Char;

Begin

Temp := A;

A := B;

B := Temp;

End;

Berikut ini merupakan Procedure BubbleSort pada Pascal :

Procedure Bubble(Var Temp : Data; JmlData : Integer);

Var I,J : Integer;

Begin

For I:=2 To JmlData Do

For J:=JmlData DownTo I Do

If Temp[J] < Temp[J-1] Then {Untuk Descending

>}

SWAP(Temp[J], Temp[J-1]);

End;

8.3. Selection Sort

Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil,

kemudian dilakukan penukaran dengan elemen ke-I. Secara singkat, metode ini

bisa dijelaskan sebagai berikut. Pada langkah pertama, dicari data yang terkecil

dari data pertama sampai data terakhir. Kemudian data tersebut kita tukar dengan

data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling

kecil dibanding data lain. Pada langkah kedua, data terkecil kita cari mulai dari

data kedua sampai data terakhir. Data terkecil yang kita peroleh kita tukar dengan

data kedua. Demikian seterusnya sampai suluruh data terurut.

Contoh dari proses Sorting dengan menggunakan metode Selection Sort :

Page 5: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

57

Tabel 8.2 Contoh sorting dengan Selection Sort

Iterasi Ke A[1] A[2] A[3] A[4] A[5] A[6]

Awal 22 10 15 3 2 8

I=1, Lok=5 2 10 15 3 22 8

I=2, Lok=4 2 3 15 10 22 8

I=3, Lok=6 2 3 8 10 22 15

I=4, Lok=4 2 3 8 10 22 15

I=5, Lok=6 2 3 8 10 15 22

Akhir 2 3 8 10 15 22

Berikut ini merupakan Procedure Selection Sort pada Pascal :

Procedure Selection(Var Temp : Data; JmlData : Integer);

Var I,J, Lok : Integer;

Begin

For I:=1 To JmlData-1 Do

Begin

Lok:=I;

For J:=I+1 To JmlData Do

If Temp[Lok] > Temp[J] Then Lok:=J;

SWAP(Temp[I], Temp[Lok]);

End;

End;

8.4. Shell Sort

Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam

metode ini jarak antara dua elemen yang dibandingkan dan ditukarkan tertentu.

Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita

ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari

elemen pertama tersebut. Kemudian elemen kedua kita bandingkan dengan

Page 6: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

58

elemen lain dengan jarak yang sama seperti diatas. Demikian seterusnya sampai

seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah

yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses

dihentikan jika jarak sudah sama dengan satu.

Contoh dari proses Sorting dengan menggunakan metode Shell Sort :

Tabel 8.3 Contoh sorting dengan Shell Sort

Jarak A[1] A[2] A[3] A[4] A[5] A[6]

Awal 22 10 15 3 2 8

Jarak = 3 22 10 15 3 2 8

3 10 15 22 2 8

3 2 15 22 10 8

3 2 8 22 10 15

Jarak = 1 3 2 8 22 10 15

2 3 8 22 10 15

2 3 8 22 10 15

2 3 8 22 10 15

2 3 8 10 22 15

2 3 8 10 15 22

Akhir 2 3 8 10 15 22

Berikut ini merupakan Procedure ShellSort pada Pascal :

Procedure Shell(Var Temp : Data; JmlData : Integer);

Var I,J, Jarak : Integer;

Begin

Jarak := JmlData Div 2;

While Jarak > 0 Do

Begin

For I:=1 To JmlData-Jarak Do

Begin

J := I + Jarak;

If Temp[I] > Temp[J] Then

SWAP(Temp[I], Temp[Lok]);

End;

Jarak := Jarak Div 2;

End;

End;

Page 7: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

59

22 10 15 3 8 2

2210 15 3 8 2

2210 153 8 2

22151083 2

221510832

8.5. Quick Sort

Metode ini dikembangkan oleh C.A.R Hoare. Secara garis besar metode ini

dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang

mempunyai N elemen. Kita pilih sembarang elemen dari data tersebut, bisanya

elemen pertama, misalnya X. kemudian semua elemen tersebut disusun dengan

menempatkan X pada posisi J sedemikian rupa sehingga elemen ke 1 sampai ke J-

1 mempunyai nilai lebih kecil dari X dan elemen J+1 sampai ke N mempunyai

nilai lebih besar dari X. Sampai saat ini kita sudah mempunyai dua sub data (kiri

dan kanan). Langkah berikutnya diulang untuk setiap sub data. Contoh dari proses

Sorting dengan menggunakan metode Quick Sort :

Proses Sorting :

Gambar 8.1 Contoh sorting dengan Quick Sort

Berikut ini merupakan Procedure QuickSort pada Pascal :

Procedure Quick(Var Temp : Data; Awal, Akhir : Integer);

Var I,J : Integer;

Procedure ATUR;

Begin

I:=Awal +1;

J:= Akhir;

While Temp[I] < Temp[Awal] Do Inc(I);

Page 8: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

60

While Temp[J] > Temp[Awal] Do Dec(J);

While I < J Do

Begin

SWAP(Temp[I], Temp[J]);

While Temp[I] < Temp[Awal] Do Inc(I);

While Temp[J] > Temp[Awal] Do Dec(J);

End;

SWAP(Temp[Awal], Temp[J]);

End;

Begin

If Awal < Akhir Then

Begin

ATUR;

Quick(Temp, Awal, J-1);

Quick(Temp,J+1,Akhir);

End;

End;

8.6. Metode Searching

Searching merupakan suatu proses pendarian data dari sejumlah data yang

ada. Pencarian data dapat dilakukan pada sejumlah data yang sudah terurut atau

juga pada data yang sama sekali belum terurut. Kita mencoba menggunakan dua

metode pencarian yaitu :

- Pencarian Berurutan (Sequential Searching).

- Pencarian Biner (Binary Seacrh).

8.6.1. Pencarian Berurutan (Sequential Searching)

Metode ini merupakan metode paling sederhana, secara garis besar metode

ini bisa dijelaskan sebagai berikut. Dari data yang diketahui, data yang dicari

dibandingkan satu per satu sampai data tersebut ditemukan atau tidak ditemukan.

Pada saat data yang dicari sudah ditemukan, maka proses pencarian langsung

dihentikan. Tetapi jika belum ditemukan, maka pencarian diteruskan sampai

seluruh data dibandingkan. Dalam kasus paling buruk, untuk data dengan N

Page 9: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

61

elemen harus dilakukan pencarian sebanyak N kali pula. Ada baiknya jika data

yang dicari tidak ditemukan maka data ditambahkan pada posisi terakhir.

Berikut ini merupakan Procedure CariUrut pada Pascal :

Procedure CariUrut(Var Ada : Boolean; Var N, Posisi : Integer;

Var Temp : Data; Elemen : Char);

Var I : Integer;

Begin

Ada:=False;

For I:=1 To N Do

If Temp[I] = Elemen Then {Data yang dicari ketemu}

Begin

Posisi:=I;

Ada:=True;

Exit;

End;

If Not Ada Then

Begin

Inc(N);

Temp[N]:=Elemen; {Tambah di posisi akhir}

End;

End;

8.6.2. Metode Pencarian Biner (Binary Search)

Metode ini digunakan jika sejumlah data telah diurutkan. Jika dibandingkan

dengan metode awal tadi metode ini jauh lebih cepat. Secara garis besar metode

ini bisa dijelaskan sebagai berikut. Urutkan dahulu sejumlah data. Lalu bagi dua

data-data tadi dengan jumlah data yang sama pada masing-masingnya. Kemudian

data dibandingkan dengan data terakhir dari subdata yang pertama. Jika data yang

dicari lebih keci, pencarian dilanjutkan pada sub data pertama dengan terlebih

dahulu membagi dua lagi data-data tersebut dengan jumlah yang sama. Tetapi jika

data yang dicari lebih besar dari data terakhir subdata pertama, berarti data yang

dicari kemungkinan terletak pada subdata yang kedua. Proses diatas dilakukan

berulang sampai data ditemukan atau tidak ditemukan.

Page 10: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

62

Berikut ini merupakan Procedure CariBiner pada Pascal :

Procedure CariBiner(Var Ada : Boolean; Var Posisi : Integer;

Var Temp : Data; Elemen : Char; N : Integer);

Var Atas, Bawah, Tengah : Integer;

Begin

Ada:=False;

Atas:=N;

Bawah:=1;

While Atas >= Bawah Do

Begin

Tengah := (Atas + Bawah) Div 2;

If Elemen < Temp[Tengah] Then

Atas:=Tengah - 1

Else If Elemen > Temp[Tengah] Then

Bawah := Tengah + 1

Else

Begin

Ada:=True;

Posisi:=Tengah;

Bawah := Atas + 1;

End;

End;

End;

LAPORAN PENDAHULUAN

1. Jelaskan pengertian Search dan Sorting, beserta jenis-jenis dari Search

dan Sorting.

2. Jelaskan bagaimana proses pencarian data menggunakan metode

Bubble/Exchange Sort, Selection Sort, Shell Sort, Quick Sort.

3. Apa yang dimaksud dengan Binary Search serta bagaimana algoritmanya?

4. Buat data yang belum terurut lalu dengan menggunakan keempat metode

diatas dan urutkan data tersebut langkah demi langkah.

Page 11: Bab 8 Sorting Searching

Bab 8 – Sorting dan Searching___________________

Modul Praktikum Struktur Data – IT045329

63

LAPORAN AKHIR

Buat Algoritma dari beberapa metode sorting yang sudah dipelajari sebelumnya.