Anda di halaman 1dari 11

Bab 8 Sorting dan Searching___________________ 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.

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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 :

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 55

Tabel 8.1 Contoh Sorting dengan Bubble Sort


Iterasi
A[1] A[2] A[3] A[4] A[5] A[6]
Ke
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.

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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 :

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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;

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 59

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 :

22 10 15 3 8 2

10 15 3 8 2 22

3 8 2 10 15 22

3 2 8 10 15 22

2 3 8 10 15 22

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);

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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.

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 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.

Modul Praktikum Struktur Data IT045329


Bab 8 Sorting dan Searching___________________ 63

LAPORAN AKHIR

Buat Algoritma dari beberapa metode sorting yang sudah dipelajari sebelumnya.

Modul Praktikum Struktur Data IT045329

Anda mungkin juga menyukai