KELAS/SEMESTER : B/II
NIM : 1801130058
KUPANG
2019
1
KATA PENGANTAR
Puji Syukur saya haturkan kehadirat Tuhan Yang Maha Esa,atas berkat dan
rahmat-Nya saya dapat menyelesaikan makalah ini yang berjudul “Quick Sort,Merge
Sort serta Binary Search” dengan baik dan tepat pada waktu yang telah ditentukan.
Tak lupa juga saya ucapkan terima kasih kepada Bapak Dosen yang telah
memberikan tugas ini kepada saya sehingga saya dapat mengetahui pengertian serta
Algoritma dari setiap komponen yang akan dijelaskan,serta ucapan terima kasih juga
untuk teman-teman yang telah mendukung saya dalam pembuatan makalah.Tanpa
bantuan dari teman-teman mungkin makalah ini tidak akan sebaik ini.
Saya juga mengetahui bahwa makalah ini masih jauh dari kata sempurna,oleh
sebab itu saya sangat mengharapkan kritik dan saran dari para pembaca.
Akhir kata,saya memohon maaf apabila dalam makalah ini terdapat kata-kata atau
kalimat yang menyinggung perasaan para pembaca,saya mohon maaf. Karena saya
membuat makalah ini bukan untuk menjatuhkan siapapun,melainkan hanya untuk
menambah Ilmu Pengatahuan.
Penulis
2
DAFTAR ISI
KATA PENGANTAR……………………………………………………………….2
DAFTAR ISI…………………………………………………………………………3
BAB I PENDAHULUAN…………………………………………………………...4
1. Latar Belakang………………………………………………………………..4
2. Rumusan Masalah……………………………………………………………..5
3. Tujuan…………………………………………………………………………5
BAB II PEMBAHASAN……………………………………………………………6
A. Pengertian………………………………………………………………………6
a) Quick Sort……………………………………………………………………....6
b) Merge Sort……………………………………………………………………...6
c) Binary Search…………………………………………………………………...8
B. Algoritma dan Contoh Kasus…………………………………………………..8
a. Quick Sort………………………………………………………………………8
b. Merge Sort…………………………………………………………………….12
c. Binary Search……………………………………………………………….....15
1. Kesimpulan…………………………………………………………………….18
2. Saran…………………………………………………………………………...19
DAFTAR PUSTAKA……………………………………………………………….20
3
BAB I
PENDAHULUAN
1. Latar Belakang
Algoritma adalah kumpulan langkah sistematis untuk memperoleh hasil yang
diinginkan.Sebelum sebuah algoritma dijalankan, biasanya ada suatu kondisi awal
(initial state) yang harus dipenuhi. Kemudian,langkah-langkah ini diproses hingga
mencapai suatu kondisi akhir (final state).
Quicksort diperkenalkan pertama kali oleh C.A.R. Hoare pada tahun 1960,
dan dimuat sebagai artikel di Computer Journal 5 pada April 1962. Bentuknya
yang sederhana,efisien dan efektif dengan cepat membuatnya menjadi algoritma
pengurutan (sorting) yang paling banyak digunakan,terutama dalam bahasa
pemrograman. Berbagai penelitian dan pengembangan telah banyak dilakukan
hingga saat ini. Tercatat peneliti seperti
Sedgewick,Bentley,McIlroy,Clement,Flajolet,Vallee,hingga Martinez,membuat
analisis dan implementasi dari quicksort.
Merge sort adalah sort yang dilakukan dengan teknik merge
(menggabungkan) dua buah array kedalam sebuah array yang baru. Algoritma
merge sort membagi tabel menjadi dua tabel yang sama besar. Masing-masing
tabel diurutkan secara rekursif,dan kemudian digabungkan kembali untuk
membentuk tabel yang terurut. Implementasi dasar dari algoritma merge sort
memakai tiga buah tabel,dua untuk menyimpan elemen dari tabel yang telah di
bagi dua dan satu untuk menyimpan elemen yang telah terurut. Namun algoritma
ini dapat juga dilakukan langsung pada dua tabel,sehingga menghemat ruang atau
memori yang dibutuhkan.
Binary Search adalah salah satu algoritma pencarian yang tercepat. Kecepatan
algoritma ini hanya bisa dikalahkan oleh teknik hashing,yang tidak akan dibahas di
sini. Untuk mencari jutaan data,Binary Search hanya butuh O(log N) kali
pembandingan (sekitar 20 kali),sedangkan Linier Search butuh O(N)
pembandingan (sekitar 500.000 kali). Tapi yang harus dicatat di sini,data yang
dicari harus sudah terurut! Algoritma iteratif (contohnya yang menggunakan
perputaran FOR,WHILE,dsb) pada umumnya dapat dengan mudah diubah ke
dalam algoritma rekursif (memanggil dirinya sendiri). Keistimewaan algoritma
iteratif adalah sederhana,cepat,dan menggunakan sedikit memori. Sedangkan pada
kasus seperti menelusuri pohon,algoritma rekursif jelas lebih baik karena lebih
4
mudah difahami. Pada prinsipnya,Binary Search adalah membandingkan Key
(angka yang dicari) dengan angka yang berada tepat di tengah-tengah deretan
angka yang sudah terurut. Jika sama,maka itulah yang dicari. Tapi jika tidak
sama,maka deretan data dipecah menjadi dua blok: Blok bawah (kecil) dan blok
atas (kecil). Lalu proses diulangi terhadap blok bawah atau blok atas,tergantung
besarnya Key apakah lebih kecil ataukah lebih besar daripada data yang berada di
tengah-tengah tadi.
2. Rumusan Masalah
Apa Pengertian dari Quick Sort,Merge Sort dan Binary Search?
Bagaimanakah Algoritma dari Quick Sort,Merge Sort dan Binary Search?
Bagaimanakah Contoh Kasus Dari Quick Sort,Merge Sort dan Binary Search?
3. Tujuan
Untuk mengetahui pengertian Quick Sort,Merge Sort dan Binary Sort
Untuk mengetahui Algoritma dari Quick Sort,Merge Sort dan Binary Search
Untuk mengetahui Contoh kasus dari Quick Sort,Merge Sort dan Binary Search
5
BAB II
PEMBAHASAN
6
tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya
yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun
1945. (id.wikipedia.org) 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 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.
Algoritma Merge umumnya memiliki satu set pointer p0..n yang menunjuk
suatu posisi di dalam satu set daftar L0..n .Pada awalnya mereka menunjuk item
yang pertama pada setiap daftar. Algoritmanya sebagai berikut:
Selama p0..n masih menunjuk data yang di dalam sebagai pengganti pada
akhirnya:
Melakukan sesuatu dengan data item yang menunjuk daftar mereka masing-
masing.
Menemukan pointers points untuk item dengan kunci yang paling rendah;
membantu salah satu pointer untuk item yang berikutnya dalam daftar
Pada umumnya algoritma merge berjalan dalam waktu proposional untuk
penjumlahan pada panjangnya daftar. Algoritma merge beroperasi pada bilangan
besar dalam daftar yang akan segera mengalikan penjumlahan panjangnya daftar
pada saat itu untuk keluaran gambar pointers points yang mana menunjuk pada
item yang paling rendah, yang dapat terpengaruhi dengan suatu heap (tumpukan)
yang didasarkan prioritas antrian dalam O (log n) waktu,untuk O (m log n) waktu
(dimana n adalah bilangan pada daftar yang digabungkan,m adalah penjumlahan
panjangnya daftar,dan lg adalah log basis 2). Ketika menggabungkan panjang m
dua daftar,terdapat suatu perbandingan lompatan yang lebih rendah 2m-1 yang ada
dalam kasus terburuk.
Keluaran data item Merge klasik (satu yang digunakan dalam merge sort)
dengan kunci yang paling rendah pada langkah masing-masing, memberikan
beberapa daftar yang diurutkan,hasil daftar yang diurutkan berisi semua unsur-
7
unsur di dalam daftar input manapun,dan hal itu dilakukan agar waktunya
proporsioal untuk input penjumlahan panjangnya daftar.
B. Algoritma dan Contoh Kasus Quick Sort,Merge Sort dan Binary Search
a. Algoritma dan Contoh KasusQuick Sort
1) Algoritma Quick Sort
Quick Sort adalah algoritma pengurutan yang sangat cepat dengan tipe
penyelesaian divide and conquer,sehingga cocok untuk mengurutkan data
dalam jumlah besar. Proses pengurutan Quick Sort adalah sebagai berikut:
8
Proses pengurutan berhenti bila pointer kiri overlap dengan pointer kanan
(langkah 8 di gambar atas),sekaligus membagi (divide) 2 bagian yang akan
diurutkan selanjutnya; yaitu partisi kiri dan kanan.
9
Proses pengurutan dilakukan sama dengan langkah sebelumnya (rekursif)
dan dilakukan pada partisi kiri dan kanan. Pembagian partisi berhenti bila tiap
partisi hanya menyisakan satu elemen data saja (lihat warna hijau pada langkah
4 di atas).
10
Kode Program: Bahasa C++
11
Contoh Pseudocode Quick Sort
pivot_location = Partition(A,low,high)
Quicksort(A,low, pivot_location - 1)
return (leftwall)
12
Demikian seterusnya sampai selesai menjadi suatu blok sedia kala. Sehingga
didalam sebuah metode merge sort itu merupakan metode yang menggunakan
fungsi rekursi untuk melakukan suatu penyelesaiannya.
Contoh penerapan merge sort.
Data sumber yang akan diurutkan adalah sebagai berikut:
langkah pertama kita bagi menjadi 3 bagian susunan elemen data yaitu 4
dengan 7,1 dengan 2 dan 9 dengan 5.
kemudian kita bandingan elemen pertama yaitu 4 dan 7. Karena 4 sudah lebih
kecil dari 7 maka posisi tetap.
13
cek angka 4 dan 1. Lebh besar mana angka 4 dibandingkan dengan angka 1.
Karena angka 1 lebih kecil dari angka 4 maka angka 1 akan menempati posisi
baru di elemen pertama.
kemudian bandingkan angka 4 dengan 2. Cek lebih kecil mana antara angka 4
dan 2.
karena angka 2 lebih kecil dari 4 maka angka 2 ke elemen baru di posisi ke 2
cek lebih kecil mana angka 4 dengan angka 5. Karena angka 4 lebih kecil dari 5
maka angka 4 menempati posisi ke 3.
14
lanjut ... bandingkan angka 7 dengan angka 9. Lebih kecil mana antara angka 7
dan 9
15
diimplementasikan dengan rekursi atau iterasi,seperti yang terlihat di atas,
walaupun pada kebanyakan bahasa pemrograman akan lebih elegan bila
dinyatakan secara rekursif. Pada intinya,algoritma ini menggunakan prinsip
divide and conquer,dimana sebuah masalah atau tujuan diselesaikan dengan
cara mempartisi masalah menjadi bagian yang lebih kecil. Algoritma ini
membagi sebuah tabel menjadi dua dan memproses satu bagian dari tabel itu
saja. Algoritma ini bekerja dengan cara memilih record dengan indeks tengah
dari tabel dan membandingkannya dengan record yang hendak dicari. Jika
record tersebut lebih rendah atau lebih tinggi,maka tabel tersebut dibagi dua dan
bagian tabel yang bersesuaian akan diproses kembali secara rekursif.
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, misalkan terurut menaik.
Konsep langkah binary search
Contoh :
a) Mencari bilangan 4 dari bilangan 1,2,3,4,5,6,7
Mencari titik tengah dari bilangan 1,2,3,4,5,6,7
Nilai titik tengah dari bilangan 1,2,3,4,5,6,7 adalah 4,maka nilai yang
dicari bisa langsung di temukan dan proses di hentikan.
b) Mencari bilangan 6 dari bilangan 1,2,3,4,5,6,7
Mencari nilai titik tengah dari bilangan yang tersedia yaitu
1,2,3,4,5,6,7
Nilai titik tengahnya adalah 4
Dari nilai yang dicari (6) apakah sama,kurang dari,atau lebih dari,dari
nilai titik tengah
Karena nilai yang di cari adalah 6,yaitu lebih dari dari nilai titik tengah
(4) maka proses dilanjutkan kekanan/keatas yaitu mencari titik tengah
dari 5,6,7
Dari bilangan 5,6,7 nilai titik tengahnya adalah 6,maka bilangan yang
dicari ditemukan dan proses dihentikan
Apabila nilai yang dicari belum ditemukan maka proses akan
dilanjutkan sampai bilngan tersebut sudah dicari titik tengahnya semua
kemudian proses berhenti.
16
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, misalkan terurut menaik.
ALGORITMA
Kamus
Const N : integer = 8 { misalkan jumlah elemen array maksimum = 8 }
Type A = array [ 1 ..... N ] ofinteger
Cari, BatasAtas, BatasBawah, Tengah : Integer
Ketemu : boolean
ALGORITMA
Input (cari) { meminta nilai data yang akan dicari}
BatasAtas 1 { indeks array dimulai dari 1 }
BatasBawah N
Ketemu False
While (BatasAtas < BatasBawah) and (not ketemu) do
Tengah (BatasAtas + BatasBawah) div 2
If A [Tengah] = cari then
Ketemu true
Else
If ( A [Tengah] < cari ) then { cari di bagian kanan }
BatasAtas Tengah + 1
Else
BatasBawah Tengah – 1 { cari di bagian kiri }
Endif
Endif
EndWhile
If (ketemu) then
Output ( ‘Data berada di index nomor’, Tengah )
Else Output ( ‘Data tidak ditemukan’ )
Endif
17
BAB III
PENUTUP
1. Kesimpulan
Berdasarkan pembahasan di atas maka dapat di simpulkan :
18
Merge Sort adalah metode pengurutan data dengan cara data dibagi menjadi
subkumpulan – subkumpulan yang kemudian subkumpulan tersebut diurutkan
secara terpisah,dan kemudian digabungkan kembali dengan metode merging.
Binary Search adalah salah satu algoritma pencarian yang tercepat. Sebuah
algoritma pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk
menemukan nilai tertentu dalam sebuah larik (array) linear,dengan menghilangkan
setengah data pada setiap langkah,dipakai secara luas tetapi tidak secara ekslusif
dalam ilmu komputer. Sebuah pencarian biner mencari nilai tengah
(median),melakukan sebuah pembandingan untuk menentukan apakah nilai yang
dicari ada sebelum atau sesudahnya,kemudian mencari setengah sisanya dengan
cara yang sama. Binary search,Pencarian secara biner,digunakan ketika sebuah
komputer harus mencari posisi sebuah simbol dalam daftar urut. Komputer akan
mencari simbol dari tengah daftar sampai data terakhir,dan membandingkannya
dengan simbol yang sedang dicari. Apabila simbol tersebut sudah
ditemukan,pencarian pada setengah daftar sisanya akan dihentikan.
2. Saran
Dari makalah ini,saya sebagai penulis mengharapkan agar para pembaca dapat
memanfaatkan Ilmu Pengetahuan yang terdapat dalam makalah ini dan
mempergunakan makalah ini sebaiknya dan semoga makalah ini bermanfaat untuk
kita semua.
19
DAFTAR PUSTAKA
https://ilmubholang.wordpress.com/2013/02/07/makalah-struktur-data-quick-sort/
(akses tanggal 21 Juni 2019,pukul 10:20)
http://ekapurwa.blogspot.com/2011/05/algoritma-quick-short.html (akses tanggal 21
Juni 2019 ,pukul 4:11)
ttps://ll101.ilearning.me/2016/11/07/makalah-tentang-merge-sort/ (akses tanggal 21
Juni,pukul 4:13)
https://dsn1.wordpress.com/2012/10/17/binary-search/ (akses tanggal 21 Juni
2019,pukul 4:12)
https://docplayer.info/30666798-Makalah-desain-dan-analisis-algoritma-binary-tree-
disusun-oleh-1-nadim-achmad-2-dzurratul-ulya.html (akses tanggal 21 Juni
2019,pukul 3:58)
20