Anda di halaman 1dari 34

E - BOOK

ALGORITMA &
PRAKTIKUM ALGORITMA
PEMROGRAMAN - I

Algoritma Sorting dan Algoritma


Pencarian Data
- Algoritma Sorting
- Algoritma Pencarian Data

FAKULTAS TEKNIK
UNIVERSITAS IBNU SINA
2020
Bab 5
ALGORITMA SORTING DAN
ALGORITMA PENCARIAN DATA
Subinarto, S.Kom, M.Kom.

Pendahuluan

B
ahasa pemrograman semakin banyak dipelajari oleh banyak orang. Hal ini terkait
dengan kemajuan zaman yang menjadikan teknologi sebagai hal penting untuk
menunjang kemajuan. Bagi pembaca yang ingin mempelajari bahasa pemrograman, hal
dasar yang harus dipahami adalah algoritma pemrograman tersebut. Untuk mengerti apa itu
algoritma pemrograman, silahkan simak pembahasan di bawah ini.
Dalam matematika dan ilmu komputer, algoritma adalah urutan atau langkah-langkah
untuk penghitungan atau untuk menyelesaikan suatu masalah yang ditulis secara berurutan.
Sehingga, algoritma pemrograman adalah urutan atau langkah-langkah untuk menyelesaikan
masalah pemrograman komputer.
Dalam pemrograman, hal yang penting untuk dipahami adalah logika kita dalam berpikir
bagaimana cara untuk memecahkan masalah pemrograman yang akan dibuat. Sebagai
contoh, banyak permasalahan matematika yang mudah jika diselesaikan secara tertulis, tetapi
cukup sulit jika kita terjemahkan ke dalam pemrograman. Dalam hal ini, algoritma dan logika
pemrograman akan sangat penting dalam pemecahan masalah. Pada bab ini akan dijelaskan
mengenai algoritma sorting dan algoritma pencarian data.

168
Topik 1
Algoritma Sorting
A. PENGERTIAN ALGORITMA SORTING

Pengertian Algoritma Sorting adalah kumpulan langkah sistematis atau secara berurutan
untuk memperoleh hasil yang diinginkan. Salah satu contoh dari algoritma untuk langkah ini
adalah Sorting (pengurutan). Sorting dapat didefinisikan sebagai pengurutan sejumlah data
berdasarkan nilai tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar
(ascending) atau sebaliknya. Sorting dapat dibedakan menjadi dua yaitu Comparation Sort dan
Non-Comparation Sort.

1. Comparasion Sort
Comparasion Sort adalah pengurutan dengan pembandingan, ini adalah algoritma yang
dalam proses pengurutannya melakukan pembandingan antar data. Adapun yang termasuk
algoritma ini antara lain :
▪ Bubble Sort
▪ Selection Sort
▪ Insertion Sort
▪ Merge Sort
▪ Quick Sort

2. Non-Comparasion Sort
Sedangkan Non-Comparasion Sort yaitu pengurutan tanpa pembandingan, algoritma ini
adalah algoritma pengurutan dimana dalam prosesnya tidak melakukan perbandingan antar
data. Adapun yang termasuk jenis algoritma ini adalah :
▪ Radix Sort, dan
▪ Counting sort

B. ALGORITMA SORTING COMPARATION SORT

1. Bubble Sort
Bubble Sort adalah salah satu algoritma untuk sorting data, atau kata lainnya
mengurutkan data dari yang terbesar ke yang terkecil atau sebaliknya (Ascending atau
Descending). Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan
dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus

169
sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada
perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing
kunci akan dengan lambat menggelembung ke posisinya yang tepat.
Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun
yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat
jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai
pada pengurutan gelembung.
Algoritma bubble sort merupakan salah satu algoritma pengurutan yang paling simple,
baik dalam hal pengertian maupun penerapannya. Ide dari algoritma ini adalah mengulang
proses pembandingan antara tiap-tiap elemen array dan menukarnya apabila urutannya
salah. Pembandingan elemen-elemen ini akan terus diulang hingga tidak perlu dilakukan
penukaran lagi. Algoritma ini termasuk dalam golongan algoritma comparison sort, karena
menggunakan perbandingan dalam operasi antar elemennya. Berikut ini adalah gambaran
dari algoritma bubble sort.
Algoritma Bubble Sort ini merupakan proses pengurutan yang secara berangsur-angsur
berpindah ke posisi yang tepat karena itulah dinamakan Bubble yang artinya gelembung.
Algoritma ini akan mengurutkan data dari yang terbesar ke yang terkecil (ascending) atau
sebaliknya (descending).
Secara sederhana, bisa didefenisikan algoritma Bubble Sort adalah pengurutan dengan
cara pertukaran data dengan data disebelahnya secara terus menerus sampai dalam satu
iterasi tertentu tidak ada lagi perubahan.

Struktur Algoritma Bubble Sort


▪ Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai
maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak
sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending
(A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan
descending (A-Z).
▪ Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini
sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
▪ Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n.
Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-
1. mulai dari data ke-1 dgn data ke-2, dst.
▪ Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.

170
Untuk belajar algoritma Bubble Sort ini kita hanya perlu memahami cara yang digunakan
untuk mengurutkan data, sederhananya algoritma ini menggunakan perbandingan dalam
operasi antar elemennya. Di bawah ini merupakan gambaran dari algoritma Bubble Sort
dengan array “3 1 4 2 8”.
Proses pertama
(3 1 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 3 2 4 8)

Proses kedua
(1 3 2 4 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)

Proses ketiga
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)

Jika kita perhatikan proses diatas, para proses kedua data sudah terurut dengan benar.
Tetapi algoritma Bubble Sort tetap berjalan hingga proses kedua berakhir. Proses ketiga masih
terus berjalan karena pada algoritma Bubble Sort maksud terurut itu adalah tidak ada satupun
penukaran pada suatu proses. Proses ketiga ini dilakukan untuk verifikasi data.
Algoritma Bubble Sort ini mempunyai kelebihan dan kekurangan, untuk kelebihannya
metode ini merupakan metode paling sederhana untuk mengurutkan data. Selain sederhana,
algoritma Bubble Sort mudah dipahami. Sementara itu, kekurangannya terletak pada efisiensi.
Bubble Sort ini merupakan metode pengurutan yang tidak efisien karena ketika mengurutkan
data yang sangat besar akan sangat lambat prosesnya. Selain itu, jumlah pengulangan akan
tetap sama jumlahnya meskipun data sudah cukup terurut.

2. Selection Short.
Pengertian dari selection sort adalah mencari elemen yang tepat untuk diletakkan di
posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut
ditemukan, Selection Sort Membandingkan elemen yang sekarang dengan elemen yang

171
berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil
dari elemen sekarang maka dicatat posisinya dan kemudian ditukar.
Pengurutan data dalam struktur data sangat penting untuk data yang beripe data
numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan
descending (urut turun) Pengurutan (Sorting) adalah proses menyusun kembali data yang
sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur
menurut aturan tertentu. Metode ini memiliki konsep memilih data yang
maksimum/minimum dari suatu kumpulan data larik L, lalu menempatkan data tersebut ke
elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan.
Data maksimum/minimum yang diperoleh, diasingkan ke tempat lain, dan tidak
diikutsertakan pada proses pencarian data maksimum/minimum berikutnya. Perhatikan
ilustrasi berikut : Misalkan ada sekumpulan data acak berjumlah n elemen yang disimpan di
dalam larik(array), akan diurut menaik, maka langkah-langkah yang harus dilakukan adalah :
mencari nilai data terkecil dimulai dari data diposisi 0 hingga diposisi N-1. Jika terdapat N data
dan data terkoleksi dari urutan 0 sampai dengan N-1 maka:
Struktur algoritma pengurutan dengan metode selection sort adalah sebagai berikut :
▪ Cari data terkecil dalam interval j = 0 sampai dengan j = N-1
▪ Jika pada posisi pos ditemukan data yang terkecil, tukarkan data diposisi pos dengan
data di posisi i jika k.
▪ Ulangi langkah 1 dan 2 dengan j = j + i sampai dengan j = N-1, dan seterusnya sampai j =
N - 1.

Bila diketahui data awal berupa: 44 55 12 42 94 18 6 67, maka langkah per langkah
pengurutan dengan metode selection sort adalah sebagai berikut:
Tabel langkah demi langkah pengurutan dengan metode Selection Sort.

43 56 13 42 95 18 5 68 Data Awal
5 56 13 42 95 18 43 68 Tukarkan data ke-1 dengan data ke-7
5 13 56 42 95 18 43 68 Tukarkan data ke-2 dengan data ke-3
5 13 18 42 95 56 43 68 Tukarkan data ke-3 dengan data ke-6
5 13 18 42 95 56 43 68 Data ke-4 tidak ditukarkan
5 13 18 42 43 56 95 68 Tukarkan data ke-5 dengan data ke-7
5 13 18 42 43 56 95 68 Data ke-6 tidak ditukarkan
5 13 18 42 43 56 68 95 Tukarkan data ke-7 dengan data ke-8
5 13 18 42 43 56 68 95 Data setelah terurut

172
Penjelasan:
▪ Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah
list
▪ Menukarkan nilai ini dengan elemen pertama list
▪ Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
▪ Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan,
yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan
bagian list yang elemennya akan diurutkan.

3. Insertion Sort
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap
elemen data pada pisisinya dengan cara melakukan perbandingan dengan data – data yang
ada. Inde algoritma dari metode insertion sort ini dapat dianalogikan sama seperti
mengurutkan kartu, dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka
kartu yang lain akan bergeser mundur atau maju sesuai kondisi pemindahanan kartu tersebut.
Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array
terurutkan sampai dengan seluruh array diurutkan.
Penganalogian Insertion Sort dengan pengurutan kartu. Berikut menjelaskan bagaimana
algoritma Insertion Sort bekerja dalam pengurutan kartu, Anggaplah kita ingi mengurutkan
satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.
▪ Dimulai dengan posisi tangan kosong, dan semua kartu berada diatas meja. Dan
anggaplah kita akan menyusun kartu ke tangan kiri kita.
▪ Mengamil kartu pertama dari meja dan meletakannya ke tangan kiri.
▪ Mengambil kartu kedua dan membandingkannya dengan kartu yang sudah ada di
tangan kiri.
▪ Jika kartu yang diambil dari meja memenuhi syarat perbandingan, maka kartu tersebut
akan diletakan didepan kartu yang dibandingkan, serta kartu yang lain yang telah
dibandingkan akan bergeser mundur (ke belakang).

Proses ini akan berlangsung sampai semua kartu akan terurutkan dengan benar sesuai
criteria pengurutannya.
Demikian juga halnya dalam pengurutan data. Jika data sudah ada, maka pengurutan
dimulai dengan mengambil satu data dan membandingkannya dengan data-data yang ada
didepannya. Jika data yang diambil memenuhi syarat perbandingan, maka data yang diambil
tersebut akan diletakan di depan data yang dibandingkan, kemudian data-data yang
dibandingkan akan bergeser mundur.

173
Catatan : Dalam hal pengurutan data dengan metode insertion sort ini, data yang
diambil pertama adalah data kedua, kemudian data yang diambil akan dibandingkan dengan
data – data yang ada disebelah kiri / data sebelumnya (data-data sebelum data yang diambil).
Jika proses tersebut selesai, maka akan dilanjutkan dengan data-data selanjutnya (data ke-3,
data ke-4… dan seterusnya). Proses akan berlangsung sampai data – data terurutkan dengan
benar.
Berikut adalah simulasi Algoritma Insertion Sort. Jika digambarkan secara singkat, maka
algoritma Insertion sort ini dapat digambar sebagai berikut.

Gambar 5.1 Simulasi Insertion Sort

Dari gambaran proses pengurutan/ sorting data di atas dapat diketahui bagaimana data-
data tersebut berpindah posisi dari satu index ke index lain dalam satu array. Untuk detail
proses pengurutan diatas, dapat disimak melalui detail simulasi berikut.
Data awal : 5, 2, 4, 6, 1, 3
Jumlah Index = 6 dimulai dari 0 s/d 5
Anggaplah index adalah ‘I’,
Untuk setiap proses pengurutan data, perbandingan data dimulai dari index kedua (dalam hal
ini i=1)

174
Proses I:
i=1, x=1; j=0
x<j à2<5? — true =2, 5, 4, 6, 1, 3

Proses II
i=2, j=1, x=2
x<j à 4<5 — true = 2, 4, 5, 6, 1, 3 j=j-1, Jika benar x=x-1
x<j à4<2 — false = 2, 4, 5, 6, 1, 3

Proses III
I=3, j=2, x=3
x<j à6<5 — false = 2, 4, 5, 6, 1, 3 j=j-1 jika sebuah proses bernilai false, maka proses tersebut
tidak akan dilanjutkan, karena secara otomatis data yang ada disebelah kiri semuanya sudah
terurut dengan benar.

Proses IV
i=4, j=3, x=4
x<j à1<6 — true = 2, 4, 5, 1, 6, 3 j=j-1, jika benar maka x=x-1
x<j à 1<5 — true = 2, 4, 1, 5,6, 3 j=j-1 , jika benar maka x=x-1
x<j à1<4 — true = 2, 1, 4, 5,6, 3 j=j-1, jika benar maka x=x-1
x<j à 1<2 — true = 1, 2, 4, 5,6, 3

Proses V
i=5, j=4, x=5
x<j à3<6 — true = 1, 2, 4, 5,3, 6 j=j-1, jika benar maka x=x-1
x<j à3<5 — true = 1, 2, 4, 3, 5, 6 j=j-1, jika benar maka x=x-1
x<j à3<4 — true = 1, 2, 3, 4, 5, 6 j=j-1, jika benar maka x=x-1
x<jà3<2 — false = 1, 2, 3, 4, 5, 6 j=j-1

4. Merge Sort
Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang
untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan
untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini
ditemukan oleh John von Neumann pada tahun 1945.
Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and
conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian
menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama

175
merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh
data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri
dari satu data tiap blok.
Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah
data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah
sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-
dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti
awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi
untuk penyelesaiannya.
Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola divide-and-
conquer. Berikut menjelaskan langkah kerja dari Mergesort.
• Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
• Conquer
Conquer setiap bagian dengan memanggil prosedur mergesortsecararekursif
• Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkanrangkaian
data berurutan

Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang
akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut
menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.

Contoh 1:
Penerapan atas sebuah larik/array sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5,
2} adalah sebagai berikut:
a. pertama kali larik tersebut dibagi menjadi dua bagian, {3, 9, 4} dan {1, 5, 2}
b. Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {3, 4, 9} dan {1, 2, 5}
c. Sebuah larik baru dibentuk yang sebagai penggabungan dari kedua larik tersebut {1},
sementara nilai-nilai dalam masing larik {3, 4, 9} dan {2, 5} (nilai 1 dalam elemen larik ke
dua telah dipindahkan ke larik baru)
d. langkah berikutnya adalah penggabungan dari masing-masing larik ke dalam larik baru
yang dibuat sebelumnya
e. {1, 2} ↔{3, 4, 9} dan {5}
f. {1, 2, 3} ↔ {4, 9} dan {5}
g. {1, 2, 3, 4}↔{9} dan {5}

176
h. {1, 2, 3, 4, 5}↔{9} dan {null}
i. {1, 2, 3, 4, 5, 9}↔{null}dan {null}

Contoh 2 :
Penerapan atas sebuah larik/array sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5, 2}
adalah sebagai berikut:

Gambar 5.2 Contoh Pengurutan Merge Sort

• Pertama kali larik tersebut dibagi menjadi dua bagian, {3, 9, 4} dan {1, 5, 2}
• Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {3, 4, 9} dan {1, 2, 5}
• Sebuah larik baru dibentuk yang sebagai penggabungan dari kedua larik tersebut {1},
sementara nilai-nilai dalam masing larik {3, 4, 9} dan {2, 5} (nilai 1 dalam elemen larik ke
dua telah dipindahkan ke larik baru)
• Langkah berikutnya adalah penggabungan dari masing-masing larik ke dalam larik baru
yang dibuat sebelumnya.

5. Quick Sort
Algoritma quick sort diperkenalkan pertama kali oleh C.A.R. Hoare pada tahun 1960, dan
dimuat sebagai artikel di “Computer Journal 5” pada April 1962. Quick sort adalah algoritma
sorting yang berdasarkan pembandingan dengan metoda divide-and-conqueror. Disebut
Quick Sort, karena Algoritma quick sort mengurutkan dengan sangat cepat.
Algoritma quick sort mengurutkan dengan sangat cepat, namun algoritma ini sangat
komplex dan diproses secara rekursif. Sangat memungkinkan untuk menulis algoritma yang
lebih cepat untuk beberapa kasus khusus, namun untuk kasus umum, sampai saat ini tidak
ada yang lebih cepat dibandingkan algoritma quick sort.

177
Quick Sort merupakan suatu algoritma pengurutan data yang menggunakan teknik
pemecahan data menjadi partisi-partisi, sehingga metode ini disebut juga dengan nama
partition exchange sort. Untuk memulai irterasi pengurutan, pertama-tama sebuah elemen
dipilih dari data, kemudian elemen-elemen data akan diurutkan diatur sedemikian rupa.
Strategi divide-and-conqueror digunakan di dalam quicksort.
Di bawah iniakan dijelaskan langkah-langkahnya :
▪ Pilih nilai pivot Kita ambil nilai di tengah-tengah elemen sebagai sebagai nilaidari pivot
tetapi bisa nilai mana saja.
▪ Partisi Atur ulang semua elemen sedemikian rupa, lalu semua elemen yang lebihrendah
daripada pivot dipindahkan ke sebelah kiri dari array/list dan semuaelemen yang lebih
besar dari pivot dipindahkan ke sebelah kanan dari array/list. Nilai yang sama
dengan pivot dapat diletakkan di mana saja dari array. Ingat, mungkin array/list akan
dibagi dalam bagian yang tidak sama.
▪ Urutkan semua bagian (kiri/kanan) Aplikasikan algoritma quicksort secararekursif pada
bagian sebelah kiri dan kanan.

Algoritma Partisi secara detail


Ada dua indeks i dan j dan pada awal algoritma partisi i menunjuk ke elemen pertama
dalam array dan poin j yang terakhir. Kemudian algoritma menggerakkan i ke depan, sampai
elemen dengan nilai yang lebih besar atau sama dengan pivot ditemukan. Indeks j bergerak
mundur, sampai elemen dengan nilai yang lebih rendah atau sama dengan pivot ditemukan.
Jika i ≤ j maka mereka bertukar dan saya langkah ke posisi berikutnya (i + 1), langkah-langkah
j dengan yang sebelumnya (j - 1).
Algoritma berhenti, ketika saya menjadi lebih besar dari j. Setelah partisi, semua nilai
sebelum elemen ke-i kurang atau sama dengan pivot dan semua nilai setelah elemen ke-j lebih
besar atau sama dengan pivot.

Kelebihan
Algoritma Quicksort memiliki kompleksitas O(n log n) dimana pada prakteknya lebih cepat dari
algoritma pengurutan lainnya.

Kekurangan
Pada kemungkinan terburuknya, algoritma Quicksort ini dapat memiliki kompleksitas O(n2).
Meskipun ini sangat langka terjadi.

178
C. NON-COMPORATION SORT

Pengurutan tanpa pembandingan (non comparison sort) adalah algoritma pengurutan


di mana dalam prosesnya tidak melakukan pembandingan antar data. Secara umum yang
proses yang dilakukan dalam metode ini adalah mengklasifikasikan data sesuai dengan
kategori terurut yang tertentu, dan dalam tiap kategori dilakukan pengklasifikasian lagi, dan
seterusnya sesuai dengan kebutuhan, kemudian subkategori-subkategori tersebut
digabungkan kembali, yang secara dilakukan hanya dengan metode sederhana concatenation.
Secara kompleksitas, dalam berbagai kasus tertentu, algoritma tanpa pembandingan ini
dapat bekerja dalam waktu linier, atau dengan kata lain memiliki kompleksitas O(n). Yang akan
ditelaah lebih detail pada masing-masing algoritma, yaitu radix sort dan counting sort. Salah
satu kelemahan dari metode ini adalah selalu diperlukannya memori tambahan.

1. Radix Sort
Sebelum memulai membahas lebih lanjut, akan lebih baik jika diadakan penyamaan
persepsi mengenai istilah radix, dalam modul ini radix bermakna harafiah posisi dalam angka.
Di mana sederhananya, dalam representasi desimal, radix adalah digitnya. Ide dasar dari
metode Radix sort ini adalah mengkategorikan data-data menjadi sub kumpulan - sub
kumpulan data sesuai dengan nilai radix -nya, mengkonkatenasinya, kemudian
mengkategorikannya kembali berdasar nilai radix lainnya.
Dalam kenyataannya banyak sekali algoritma Radix sort yang berbeda-beda walaupun
ide dasarnya sama, ada yang menggunakan queue, ada yang menggunakan bantuan algoritma
pengurutan lain untuk mengurutkan data per kategori, ataupun menggunakan rekursif.
Selain itu, ada 2 macam Radix sort berdasarkan urutan pemrosesan radix-nya, yaitu
secara LSD (Least Significant Digit) di mana pemrosesan dimulai dari radix yang paling tidak
signifikan, dan satu lagi secara MSD (Most Significant Digit), di mana pemrosesan dimulai dari
radix yang paling signifikan.
Namun dalam makalah ini yang dibahas adalah LSD radix sort, di mana langkah yang
dilakukan lebih sederhana dibanding dengan MSD radix sort yang dalam pemrosesannya
diperlukan penyimpanan track dari pemrosesan sebelumnya.
Agar relevan dengan topik utama makalah ini yang mengedepankan pengurutan tanpa
pembandingan, yang dibahas hanyalah radix sort yang dalam prosesnya hanya menggunakan
pengkategorian berulang, tanpa menggunakan bantuan algoritma pengurutan lain.

179
Implementasi Radix Sort
Contoh implementasi yang akan dilakukan adalah implementasi pada bilangan bulat positif
menggunakan salah satu algoritma pengurutan radixsort. Contohnya adalah pengurutan
sebuah kumpulan data bilangan bulat dengan jumlah digit maksimal3 :

Pertama kali, data dibagi-bagi sesuai dengan digit terkanan :

Tabel 5.1 Proses sorting

Hasil pengkategorian tersebut lalu digabung kembali dengan metode konkatenasi menjadi:

Kemudian pengkategorian dilakukan kembali, namun kali ini berdasar digit kedua atau digit
tengah, dan jangan lupa bahwa urutan pada tiap subkumpulan data harus sesuai dengan
urutan kemunculan pada kumpulan data.

180
Tabel 5.2 Proses sorting

Yang kemudian dikonkatenasi kembali menjadi

Kemudian langkah ketiga, atau langkah terakhir pada contoh ini adalah pengkategorian
kembali berdasar digit yang terkiri, atau yang paling signifikan:

Tabel 5.3 Proses Sorting

Yang kemudian dikonkatenasi lagi menjadi

181
Yang merupakan hasil akhir dari metode pengurutan ini. Di mana data telah terurut dengan
metode radix sort.

2. Counting Sort
Untuk dapat melakukan pengurutan dengan counting sort rentang nilai untuk kumpulan
data yang akan diurutkan harus diketahui, katakanlah k. Ide dasar dari counting sort adalah
menentukan, untuk setiap elemen x, jumlah elemen yang lebih kecil daripada x, yang
kemudian informasi ini digunakan untuk menentukan posisi x.
Contoh sederhana saja, jika terdapat 12 elemen yang lebih kecil daripada x, maka x akan
mendapatkan posisinya di posisi 13. Tentu saja, sedikit modifikasi harus dilakukan agar
metode ini dapat menangani kasus di mana terdapat elemen-elemen lain yang nilainya sama
dengan x. Dimana tentu saja kita tidak dapat menempatkan semua elemen yang nilainya sama
dengan x di posisi yang sama.

Implementasi Counting sort


Misal array data yang akan diurutkan adalah A. Counting sort membutuhkan sebuah array
Cberukuran k, yang setiap elemen C[i] merepresentasikan jumlah elemen dalam A yang
nilainya adalah i. Di array inilah penghitungan (counting) yang dilakukan dalam pengurutan ini
disimpan. Misal kita akan melakukan pengurutan pada array A sebagai berikut,
dengan n adalah 10 dan diasumsikan bahwa rentang nilai setiap A[i] adalah 1..5 :
A
1 3 5 4 5 2 2 3 3 5

Dan array C setelah diinisialisasi adalah :


C
0 0 0 0 0
Kemudian proses penghitungan pun dimulai, proses ini linier, dilakukan dengan
menelusuri array A.
Langkah 1 : pembacaan pertama mendapat elemen A[1] dengan isi 1, maka C[1] ditambah 1.
A
1 3 5 4 5 2 2 3 3 5

C
1 0 0 0 0

182
Langkah 2 : pembacaan kedua mendapat elemen A[2] dengan isi 3, maka C[3] ditambah 1.
A
1 3 5 4 5 2 2 3 3 5

C
1 0 1 0 0

Langkah 3 : pembacaan ketiga mendapat elemen A[3] dengan isi 5, maka C[5] ditambah 1.
A
1 3 5 4 5 2 2 3 3 5

C
1 0 1 0 1

Langkah 4 : pembacaan keempat mendapat elemen A[4] dengan isi 4, maka C[4] ditambah 1.
A
1 3 5 4 5 2 2 3 3 5

C
1 0 1 1 1

Demikian dilakukan terus menerus hingga semua elemen A telah diakses. Hingga setelah
langkah ke 10 didapatkan array C sebagai berikut :
C
1 2 3 1 3

Lalu array C diproses sehingga setiap elemen C, C[i] tidak lagi merepresentasikan jumlah
elemen dengan nilai sama dengan i, namun setiap C[i] menjadi merepresentasikan jumlah
elemen yang lebih kecil atau sama dengan i. Dan setelah proses tersebut dilakukan
didapatkan C sebagai berikut :
C
1 3 6 7 10

Setelah C didapat dilakukan proses penempatan sesuai dengan posisi yang didapat.
Proses ini dilakukan dengan menelusuri kembali A dari belakang. Mengapa dari belakang?

183
Karena kita mengharapkan hasil pengurutan yang stable, yang akan sangat penting dalam
pengurutan data majemuk.
Dalam proses ini kita mengakses elemen A[i], kemudian memposisikannya di posisi
sebagaimana tercatat dalam C[A[i]], kemudian kita mengurangkan C[A[i]] dengan 1, yang
dengan jelas untuk memberikan posisi untuk elemen berikutnya dengan yang isinya sama
dengan A[i].
Proses ini memerlukan sebuah array bantu B yang ukurannya sama dengan array A,
yaitu n. Yang pada awalnya semua B[i] diinisialisasi dengan nil.
B
- - - - - - - - - -

Langkah 1 : elemen A[10] adalah 5, maka karena C[5] adalah 10, maka B[10] diisi dengan 5,
dan C[5] dikurangi 1.
A
1 3 5 4 5 2 2 3 3 5

B
- - - - - - - - - 5

C
1 3 6 7 9

Langkah 2 : elemen A[9] adalah 3, maka karena C[3] adalah 6, maka B[6] diisi dengan 3,
dan C[3] dikurangi 1.
A
1 3 5 4 5 2 2 3 3 5

B
- - - - - 3 - - - 5

C
1 3 5 7 9

Langkah 3: elemen A[8] adalah 3, maka karena C[3] adalah 5, maka B[5] diisi dengan 3,
dan C[3] dikurangi 1.

184
A
1 3 5 4 5 2 2 3 3 5

B
- - - - 3 3 - - - 5

C
1 3 4 7 9

Langkah 4 : elemen A[7] adalah 2, maka karena C[2] adalah 3, maka B[3] diisi dengan 2,
dan C[2] dikurangi 1.
A
1 3 5 4 5 2 2 3 3 5

B
- - 2 - 3 3 - - - 5

C
1 2 4 7 9

Demikian proses dilakukan hingga elemen A[1] selesai diproses, sehingga didapatkan hasil
akhir

B
1 2 2 3 3 3 4 5 5 5

Yang telah berupa array dengan elemen-elemennya terurut secara non-decreasing.

Latihan

Untuk dapat memperdalam pemahaman Anda mengenai materi di atas, kerjakanlah Latihan
berikut!

1) Apa yang dimaksud dengan algoritma sorting ?


2) Sebutkan metode pengurutan data!
3) Apa yang dimaksud dengan algoritma selection sort?

185
4) Apa perbedaan exchange sort dan bubble sort?
5) Jelaskan perbedaan Comparasion Sort dengan Non Comparasion Sort !

Tes 1
Jawablah Pertanyaan dibawah ini dengan tepat!

1) Diketahui array “22 10 15 3 8 2”, urutkan secara ascending menggunakan Bubble Sort!
2) Diketahui array “5, 1, 12, -5, 16, 2, 12, 14” urutkan secara ascending menggunakan
Selection Sort!

186
Topik 2
Algoritma Pencarian Data
A. KONSEP DASAR DAN PENGERTIAN

Algoritma pencarian dapat dijelaskan secara luas adalah sebuah algoritma yang
menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah
tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian besar
algoritma yang dipelajari oleh ilmuwan komputer adalah algoritma pencarian. Himpunan
semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algortima pencarian
brute-force atau pencarian naif/uninformed menggunakan metode yang sederhana dan
sangat intuitif pada ruang pencarian, sedangkan algoritma pencarian informed menggunakan
heuristik untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk
berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian.(Wikipedia).

Pengertian Searching
Pencarian (searching) merupakan proses fundamental dalam pengelolaan data. Proses
pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe
sama (baik bertipe dasar atau bertipe bentukan). Search algoritma adalah algoritma yang
menerima argument a dan mencoba untuk mencari record yang mana key-nya adalah
Algoritma bisa mengembalikan nilai record, atau pointer ke record. Record sendiri adalah tipe
data yang terdiri atas kumpulan variabel yang dapat berbeda tipenya. Setiap variabel disebut
field. Sequensial Search (penelusuran sequensial) yaitu proses mengunjungi melalui suatu
pohon dengan cara setiap simpul di kunjungi hanya satu kali yang disebut tree transversal /
kunjungan pohon. Sedangkan Binary Search adalah penelusuran pohon biner dimana data
yang dimasukkan atau yang sudah ada diurutkan terlebih dahulu.
Data dapat di simpan secara temporer dalam memori utama atau di simpan secara
permanen di dalam memori sekunder (tape atau disk). Di dalam memori utama, struktur
penyimpanan data yang umum adalah berupa larik atau tabel (array), sedangkan di dalam
memori sekunder berupa arsip (file). Aktivitas yang berkaitan dengan pengolahan data ini
sering di dahului dengan proses pencarian. Sebagai contoh, untuk mengubah (update) data
tertentu, langkah pertama yang harus dilakukan adalah mencari keberadaaan data tersebut
di dalam kumpulannya. Aktivitas yang awal sama juga dilakukan pada proses penambahan
(insert) data yang baru. Proses penambahan data dimulai dengan mencari apakah data yang
ditambahkan sudah terdapat di dalam kumpulan. Jika sudah dan mengasumsikan tidak boleh

187
ada duplikasi data maka data tersebut tidak perlu ditambahkan, tetapi jika belum ada, maka
tambahkan.
Algoritma pencarian yang akan dibicarakan dimulai dengan algoritma pencarian yang
paling sederhana yaitu pencarian beruntun atau Sequential Search sampai pada algoritma
pencarian yang lebih maju yaitu pencarian bagi dua (Binary Search).
Searching berarti pencarian, contoh suatu situs yang belum kita ketahui secara pasti
alamat yang dimiliki. Dalam melakukan searching biasanya kita gunakan search engine sebagai
mesin pembantu dalam pencarian situs tersebut. Search engine adalah sebuah fasilitas (web)
yang bisa mencari links dari situs lain. Ada berbagai macam search engine yang bisa kita
gunakan dalam searcing, yaitu ; yahoo, google, altavista, lycos, astaga, msn, dan lain
sebagainya.

B. JENIS-JENIS ALGORITMA SEARCHING.

1. Sequential Search
Disebut juga sebagai metode pencarian urut adalah metode pencarian yang paling
mudah. Adalah suatu teknik pencarian data dalam array ( 1 dimensi ) yang akan menelusuri
semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan
terlebih dahulu. Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks
array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian
data sangat sebentar (minimal). Sedangkan kemungkinan terburuk (worst case) adalah jika
data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang
dibutuhkan untuk pencarian data sangat lama (maksimal).
Sequential search memiliki proses sebagai berikut:
▪ Tentukan banyaknya data yang akan di olah, misal banyak data adalah N.
▪ Tentukan data apa yang akan dicari, misal data yang akan dicari adalah C.
▪ Deklarasikan sebuah counter untuk menghitung banyak data yang ditemukan, missal
counternya adalah K.
▪ Inisialisasikan K =0
▪ Lakukanlah perulangan sebanyak N kali
▪ Dalam tiap proses perulangan tersebut periksalah apakah data yang sedang diolah sama
dengan data yang dicari.
▪ Jika ternyata sama K=K+1
▪ Jika tidak, lanjutkan proses perulangan .
▪ Setelah proses perulangan berhenti, periksalah nilai K.
▪ Jika nilai K lebih dari 0, artinya data yang dicari ada dalam data /array dan tampilkan
nilai K ke layer sebagai jumlah data yang ditemukan.

188
▪ Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data / array dan tampilkan
ke layar bahwa data tidak ditemukan
▪ Proses selesai.

Dapat disimpulkan bahwa sequential search, akan mencari data dengan cara
membandingkannya satu-persatu dengan data yang ada. Prosesnya tentu saja akan singkat
jika data yang diolah sedikit, dan akan lama jika data yang diolah banyak. Disarankan proses
ini digunakan pada jumlah data yang sedikit saja.

Implementsi Sequential Search

Gambar 5.3 Implementasi Sequential search

Diketahui array {19 27 5 99 88 32 72}, proses di atas merupakan pencarian yang


ditemukan dan tidak ditemukan.
Pada proses yang ditemukan, data yang akan dicari adalah data {5}. Maka algoritma
sequential akan memproses pencarian data dimulai dari data ke-0 yaitu {19} sampai dengan
data ke-6 {72}. Jika proses pencarian sudah sampai pada data yang terakhir atau data ke-6
{72}, maka sequential search akan menghitung berapa jumlah data {5} yang ditemukan. Pada
contoh di atas data {5} terletak pada data ke-2, dan jumlahnya sebanyak 1.
Pada proses yang tidak ditemukan, data yang akan dicari adalah data {202}. Maka
algoritma sequential akan memproses pencarian data dimulai dari data ke-0 yaitu {19} sampai
dengan data ke-6 {72}. Jika proses pencarian sudah sampai pada data yang terakhir atau data
ke-6 {72}, maka sequential search akan menghitung berapa jumlah data {202} yang
ditemukan. Pada contoh di atas data {202} tidak ditemukan pada array.

189
2. Binary Search
Binary Search adalah metode pencarian suatu data atau elemen di dalam suatu array
dengan kondisi data dalam keadaan terurut. Proses pencarian Binary Search hanya dapat
dilakukan pada kumpulan data yang sudah diurutkan terlebih dahulu. Jika terdapat N buah
data yang akan diolah, data yang dicari akan dibandingkan dengan data ke-N jika data ke-N
lebih besar dari data yang dicari maka akan dilakukan pembagian data menjadi dua bagian.
Kemudian ujung data pada setiap bagian dibandingkan lagi dengan nilai yang akan dicari.

Implementsi Binary Search


A = {2, 5, 8, 12, 15, 25, 37, 57}
Contoh 1 : cari = 12
Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = ( 1 + 8 ) div 2 = 4
A [Tengah] = A [4] = 12, berarti loop pertama data langsung ditemukan

Contoh 2 : cari = 15
Loop pertama : Tengah=(BatasAtas + BatasBawah) div 2=( 1 + 8 ) div 2 = 4
A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1 = 4 + 1 = 5
Loop kedua : Tengah=(BatasAtas + BatasBawah) div 2=( 5 + 8 ) div 2=6
A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah – 1 = 6 – 1 = 5
Loop ketiga : Tengah=(BatasAtas + BatasBawah) div 2=( 5 + 5 ) div 2 = 5
A [Tengah] = A [5] = 15, berarti setelah loop ketiga, data ditemukan

Contoh 3 : cari = 10
Loop pertama : Tengah=(BatasAtas + BatasBawah) div 2=( 1 + 8 ) div 2=4
A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah – 1 = 4 – 1 = 3
Loop kedua : Tengah=(BatasAtas + BatasBawah) div 2=( 1 + 3 ) div 2=2
A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1 = 2 + 1 = 3
Loop ketiga : Tengah=(BatasAtas + BatasBawah) div 2=( 3 + 3 ) div 2=3
A [Tengah] = A [3] = 8, berarti setelah loop ketiga, data tidak ditemukan

Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak (log n) kali.
Untuk contoh di atas, jumlah data 8, maka proses pembandingan maksimal sebanyak 3 kali.

3. Interpolation Search
Proses pencarian data ini hampir sama dengan proses pencarian binary search,
pencarian ini juga dilakukan pada kumpulan data yang sudah urut. Akan tetapi jika pada Binary

190
Search kita membagi data menjadi 2 bagian tiap prosesnya, pada interpolation search kita
akan membagi data menurut rumus sebagai berikut:
Posisi = ( kunci – data[low] / data[high] – data[low] ) * ( high – low ) + low
– Jika data[posisi] > data yg dicari, high = pos – 1
– Jika data[posisi] < data yg dicari, high = pos + 1

Singkatnya proses pencarian interpolation search hampir mirip dengan proses pencarian
kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data.

Implementasi Interpolation Search

Contoh Kasus :

Kode Judul Pengarang


025 The C++ Programming James Wood
034 Mastering Delphi 6 Marcopolo
041 Professional C# Simon Webe
056 Pure JavaScript v2 Micheal Bolton
063 Advance JSP & Servlet David Dunn
072 Calculus Make it Easy Gunner Christian
088 Visual Basic 2005 Express Antonie
096 Artificial Live : Volume 1 Gloria Virginia

Gambar 5.4 Implementasi Sequential search

Penjelasan :

Contoh 1 :
Pencarian = 088
Low? 0
High? 8
Posisi = int(( ) / ( ) * (8 - 0) + 0) = [7]
Kode[7] = kunci pencarian, data ditemukan: Visual Basic 2005 Express

Contoh 2 :
Kunci Pencarian? 060
Low? 0

191
High? 8
Posisi = int((060 – 025) / (096 – 025) * (8 – 0) + 0) = [3]
Kunci[3] < kunci pencarian, maka teruskan
Low = 3 + 1 = 4
High = 8
Posisi = int((060 – 025) / (096 – 025) * (8 – 4) + 4) = [5]
Ternyata Kunci[5] adalah 063 yang lebih besar daripada 060. Data tidak ditemukan.

C. STRUTUR ALGORITMA SEARCHING.

1. Struktur Algoritma Pencarian berurutan menggunakan prinsip sebagai berikut :


o data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari
sampai data tersebut ditemukan atau tidak ditemukan.
o Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan
jumlah data.
o Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari.
o Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir
pengulangan tidak ada data yang sama, berarti data tidak ada.
o Kelemahan pada kasus yang paling buruk, untuk N elemen data harus dilakukan
pencarian sebanyak N kali pula. Algoritma pencarian berurutan dapat dituliskan
sebagai berikut :
(1) i ← 0
(2) ketemu ← false
(3) Selama (tidak ketemu) dan (i <= N) kerjakan baris 4
(4) Jika (Data[i] = x) maka ketemu ← true, jika tidak i ← i + 1
(5) Jika (ketemu) maka i adalah indeks dari data yang dicari, jika data tidak
ditemukan
Variabel data;
For (init_awal, kondisi) {
Statemen yang dicari;
}

· Contoh dengan bahasa C++


#include <stdio.h>
#include <conio.h>
void main(){
int data[8] = {8,10,6,-2,11,7,1,100};

192
int cari;
int flag=0;
printf("masukkan data yang ingin dicari = ");scanf("%d",&cari);
for(int i=0;i<8;i++){
if(data[i] == cari) flag=1;
}
if(flag==1) printf("Data ada!\n");
else printf("Data tidak ada!\n");
getch();
return 1;
}

Dari program diatas, terlihat bahwa dilakukan perulangan untuk mengakses semua
elemen array data satu persatu berdasarkan indeksnya.
• Program menggunakan sebuah variabel flag yang berguna untuk menadai ada atau
tidaknya data yang dicari dalam array data. Hanya bernilai 0 atau 1.
• Flag pertama kali diinisialiasasi dengan nilai 0.
• Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap
bernilai 0.
• Semua elemen array data akan dibandingkan satu persatu dengan data yang dicari dan
diinputkan oleh user.

Latihan

Untuk dapat memperdalam pemahaman Anda mengenai materi di atas, kerjakanlah Latihan
berikut!

1) Apa yang dimaksud dengan algoritma pencarian data?


2) Sebut dan jelaskan macam-macam algoritma pencarian data!!
3) Tuliskan rumus algoritma interpolation search!
4) Jelaskan proses pencarian menggunakan binnary search!
5) Jelaskan struktur dari algoritma pencarian!

193
Ringkasan

Algoritma Sorting adalah kumpulan langkah sistematis atau secara berurutan untuk
memperoleh hasil yang diinginkan. Salah satu contoh dari algoritma untuk langkah ini adalah
Sorting (pengurutan). Sorting dapat didefinisikan sebagai pengurutan sejumlah data
berdasarkan nilai tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar
(ascending) atau sebaliknya.
Comparasion Sort adalah pengurutan dengan pembandingan, ini adalah algoritma yang
dalam proses pengurutannya melakukan pembandingan antar data. Adapun yang termasuk
algoritma ini antara lain :
▪ Bubble Sort
▪ Selection Sort
▪ Insertion Sort
▪ Merge Sort
▪ Quick Sort

Sedangkan Non-Comparasion Sort yaitu pengurutan tanpa pembandingan, algoritma ini


adalah algoritma pengurutan dimana dalam prosesnya tidak melakukan perbandingan antar
data. Adapun yang termasuk jenis algoritma ini adalah :
▪ Radix Sort, dan
▪ Counting sort

Pencarian (searching) merupakan proses fundamental dalam pengelolaan data. Proses


pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe
sama (baik bertipe dasar atau bertipe bentukan). Search algoritma adalah algoritma yang
menerima argument a dan mencoba untuk mencari record yang mana key-nya adalah
Algoritma bisa mengembalikan nilai record, atau pointer ke record.
Algoritma pencarian yang akan dibicarakan dimulai dengan algoritma pencarian yang
paling sederhana yaitu pencarian beruntun atau Sequential Search sampai pada algoritma
pencarian yang lebih maju yaitu pencarian bagi dua (Binary Search).

194
Tes 2
Pilihlah salah satu jawaban yang paling benar!

1) Diketahui array data [13, 16, 14, 21, 76, 21], cari data 21, 13, dan 15 menggunakan
metode sequential !
2) Diketahui array data [81, 76, 21, 18, 16, 13, 10, 7], cari data 18 menggunakan binnary
search!

195
Kunci Jawaban Tes
Tes 1
1) Jawaban sorting menggunakan Bubble Sort
Proses 1 :
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8

Pengecekan dimulai dari data yang paling akhir, kemudian dibandingkan dengan data di
depannya,jika data didepannya lebih besar maka akan di tukar.
Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8

pengecekan dilakukan sampai dengan data ke-2 karena data pertama pasti sudah paling
kecil.
Proses 3 :
2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15

Proses 4 :
2 3 8 22 10 15
2 3 8 22 15 10
2 3 8 15 22 10

196
Proses 5 :
2 3 8 15 22 10
2 3 8 15 10 22

Pengurutan berhenti.
Jawaban sorting menggunakan Selection Sort

Tes 2
1) Jawaban :
Nilai yang dicari: 21
Maka elemen yang diperiksa : 13 16 14 21
Index ketemu : 4
Nilai yang dicari: 13
Maka elemen yang diperiksa : 13
Index ketemu : 1
Nilai yang dicari: 15
Maka elemen yang diperiksa : 13 16 14 21 76 21

197
Index ketemu : 0
Algoritma dari proses Pencarian diatas adalah:
1. Tentukan i=1, Ketemu = 0.
2. Masukan Nilai X à nilai yang dicari.
3. Jika Nilai[i] <> X maka i=i+1, kembali kelangkah 2.
4. Jika Nilai[i] = X maka Ketemu =i.
5. Jika Ketemu = 0 maka Cetak “nilai X tidak ketemu”
6. Jika tidak (Ketemu <>0)Cetak “nilai X ketemu pada posisi Ketemu”
7. Selesai

2) Jawaban
Dicari adalah X=18.
Langkah 1:
Low = 1 dan High = 8
Elemen tengah Middle = (1+8) div 2 = 9 div 2 = 4

Langkah 2:
Larik[4] = X ? (18 = 18) true à X ditemukan, pencarian dihentikan.

198
Glosarium
Ascending : Mengurutkan data dari yang terkecil ke yang terbesar
Descending : Mengurutkan data dari yang terbesar ke yang terkecil
Divide : Memilah elemen-elemen dari rangkaian data menjadi
dua bagian.
Conquer : Setiap bagian dengan memanggil prosedur mergesort
secara rekursif
Kombinasi : Mengkombinasikan dua bagian tersebut secara rekursif
untuk mendapatkanrangkaian data berurutan
Algoritma Sorting : kumpulan langkah sistematis atau secara berurutan
untuk memperoleh hasil yang diinginkan
Algoritma Searching : algoritma yang menerima argument a dan mencoba
untuk mencari record yang mana key-nya adalah
Algoritma bisa mengembalikan nilai record, atau
pointer ke record
Daftar Pustaka
Sismoro, H. 2016. Pengantar Logika Informatika, Algoritma dan Pemrograman Komputer.
Yogyakarta: ANDI.

Munir, R. dan Lidya, L. 2016. Algoritma dan Pemrograman Dalam Bahasa Pascal, C dan C++.
Informatika. Bandung : Informatika.

Solichin, Achmad S.Kom. 2009. Pemrograman Web dengan PHP dan MySQL. Jakarta :
Universitas Budi Luhur.

Kadir, A. 2012. Algoritma Menggunakan C dan C++. Yogyakarta : ANDI Publisher

Raharja, B. 2016. Modul Pemrograman WEB (HTML, PHP, & MySQL. Edisi Ketiga Modula.

200

Anda mungkin juga menyukai