Modul Sorting
Modul Sorting
Pencarian dan
Pengurutan
Program Studi Teknik Informatika
Fakultas Ilmu Komputer
Universitas Esa Unggul
2018
0
SEARCHING
Teori
Sequential Search
Binary Search
Binary search adalah sebuah algoritma pencarian dengan cara membagi data
menjadi dua bagian setiap kali terjadi proses pencarian untuk menemukan nilai
tertentu dalam sebuah larik (array) linear. 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.
Ilustrasi Searching
1. Sequential Search
1
2. Binary Search
Contoh Program
a. Program 1
2
a. Program 2
3
b. Program 3
4
Latihan
Tuliskan dan jalankan dua program berikut ini dan jelaskan perbedaan dari kedua
pemrograman tersebut !
a. Program 1
b. Program 2
5
SORTING
Teori
2. TEKNIK-TEKNIK SORTING
Selection Sort
Selection Sort merupakan kombinasi antara sorting dan searching. Untuk setiap
proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil
atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array.
Misalnya :
Untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan
ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua
terkecil, dan akan ditempatkan di indeks kedua (data[1])
Selama proses, pembandingan dan pengubahan hanya dilakukan pada
indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Insertion Sort
Insertion Sort mirip dengan cara orang mengurutkan kartu, selembar demi
selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya.
6
• Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika
ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi
yang seharusnya.
• Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke
belakang
Merge Sort
Sorting ini biasanya digunakan untuk jumlah data yang besar. Dengan
membagi-bagi menjadi sub-sub bagian mulai dari sedikit elemen hingga
keseluruhan elemen tersebut menjadi data yang sudah urut. Sorting ini
digunakan bila kapasitas memori tidak sanggup untuk menampung seluruh
data yang akan disortir.
Contoh 14 elemen berikut ini akan disortir :
66, 33, 40, 22, 55, 88, 60, 11, 80, 20, 50, 44, 77, 30
Pass 1, dibagi menjadi sub-sub yang tiap subnya berisi 2 elemen, kemudian
disortir, hasilnya:
33, 66 22, 40 55, 88 11, 60 20, 80 44, 50 30, 70
Pass 2, gabungan 2 subbagian sebelumnya menjadi 1 subbagian, kemudian
disortir, hasilnya :
22, 33, 40, 66 11, 55, 60, 88 20, 44, 50, 80 30, 70
Pass 3, lakukan seperti langkah 2 hingga seluruh subbagian menjadi satu
bagian.
11, 22, 33, 40, 55, 60, 66, 88 20, 30, 44, 50, 77, 80
11, 20, 22, 30, 33, 40, 44, 50, 55, 60, 66, 77, 80, 88 ( Hasil Akhir)
7
Bubble Sort
Bubble Sort merupakan metode sorting termudah, diberi nama “Bubble” karena
proses pengurutan secara berangsur- angsur bergerak/berpindah ke posisinya yang
tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.
Jika pengurutan ascending :
jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen
tersebut ditukar
Jika pengurutan descending :
jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen
tersebut ditukar
Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses,
demikian seterusnya. Kapan berhentinya? Bubble sort berhenti jika seluruh array
telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai
perurutan yang telah diinginkan. Algoritma Bubble Sorting mudah dalam sintaks,
tetapi lebih lambat dibandingkan dengan algoritma sorting yang lain
Algoritma bubble sort dalam proses pengurutan data secara sederhana bisa
diibaratkan seperti halnya gelembung udara (bubble). Algoritma ini akan menggeser
nilai yang terkecil atau terbesar (sesuai dengan jenis pengurutan, ascending atau
descending) ke posisi ujung dari daftar. Demikian seterusnya hingga semua daftar
dalam keadaan terurut. Proses dasar yang terjadi dalam algoritma ini adalah proses
pertukaran nilai (swapping).
Algoritma dari teknik ini adalah dengan melakukan proses perbandingan
sebanyak n elemen dimulai dari n=1 (selanjutnya disebut mulai=1). Bandingkan
seluruh elemen diawali dari elemen sebelah kanan hingga ke-n. bila elemen tersebut
< dari mulai, maka lakukan pertukaran tempat. Lakukan pada elemen mulai +1
seperti proses sebelumnya hingga nilai mulai +1 = n.
8
Kelebihan Bubble Sort
Metode Buble Sort merupakan metode yang paling simpel
Metode Buble Sort mudah dipahami algoritmanya
Kelemahan Bubble Sort
Meskipun simpel metode Bubble sort merupakan metode pengurutanyang paling
tidak efisien. Kelemahan buble sort adalah pada saat mengurutkan data yang
sangat besar akan mengalami kelambatan luar biasa, atau dengan kata lain kinerja
memburuk cukup signifikan ketika data yang diolah jika data cukup banyak.
Kelemahan lain adalah jumlah pengulangan akan tetap sama jumlahnya walaupun
data sesungguhnya sudah cukup terurut. Hal ini disebabkan setiap data
dibandingkan dengan setiap data yang lain untuk menentukan posisinya.
Quick Sort
Quick Sort adalah sebuah algoritma sortir dari model Divide and Conquer
yaitu dengan cara mereduksi tahap demi tahap sehingga menjadi 2 bagian yang
lebih kecil.
1. Kita harus mengidentifikasi key pada indeks pertama dalam list.
2. List dipartisi menjadi 2 bagian dimana list yang sebelah kiri adalah kumpulan dari
key-key yang lebih kecil dari key pada indeks pertama dan list yang disebelah
kanan adalah kumpulan dari key-key yang lebih besar dari key pada indeks
pertama.
PRINSIP
O *
* O *
Key < 0 Key > 0
Exchange Sort
Exchange Sort sangat mirip dengan Bubble Sort, banyak yang mengatakan
Bubble Sort sama dengan Exchange Sort.
Pebedaan :
dalam hal bagaimana membandingkan antar elemen-elemennya.
9
Exchange sort membandingkan suatu elemen dengan elemen-elemen
lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi
ada elemen yang selalu menjadi elemen pusat (pivot).
Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir
dengan elemen sebelumnya/sesudahnya, kemudian elemen tersebut itu akan
menjadi pusat (pivot) untuk dibandingkan dengan elemen
sebelumnya/sesudahnya lagi, begitu seterusnya.
Ilustrasi Sorting
1. Bubble Sort
10
Gambar 3. Proses ke-3 algoritma Bubble Sorting
11
2. Selection Sort
12
3. Insertion Sort
13
4. Quick sort
14
5. Exchange Sort
15
Contoh Program
a. Program
16
17
Latihan
18
3. KOMPLEKSITAS WAKTU
Untuk menilai mana program yang baik, yaitu program yang paling ringkas.
Maka, ada cara khusus untuk itu dinamakan dengan kompleksitas waktu (time
complexity). Meskipun menggunakan istilah waktu, namun tidak menggunakan
satuan detik, menit, atau sejenisnya yang biasa kita gunakan akan tergantung pada
kecepatan prosesor komputer.
Perhitungan Kompleksitas waktu sebuah algoritma sangatlah rumit, dan
memerlukan pengetahuan matematika yang cukup kuat. Komplekitas waktu
(utamanya dalam hal sortir data) memiliki tiga kriteria, yaitu waktu tercepat (best
case), waktu rata-rata (average case), dan waktu terburuk (worth case).
4. Pemilihan Pivot
Dalam Quick sort pemilihan pivot adalah hal yang menentukan apakah algoritma
tersebut akan memberikan performa terbaik atau terburuk, berikut cara pemilihan
pivot :
1. Elemen pertama, elemen tengah ataupun elemen akhir data. cara ini hanya
bagus jika elemen data tersusun secara acak, tetapi tidak bagus jika elemen
semula sudah berurutan.
2. Memilih pivot secara acak dari salah satu data pada elemen data. Cara ini
bagus, tapi banyak menghabiskan banyak memori, karena perlu banyak
memori untuk membangkitkan pengacakan data. Lagi pula itu tidak
mengurang kompleksitas waktu algoritma.
3. Elemen median data. Cara ini paling bagus, karena hasil partisi menghasilkan
dua bagian yang berukuran seimbang (masing-masing = n/2 elemen). Cara ini
memberikan kompleksitas waktu yang minimum. Masalahnya, mencari
median dari elemen data yang belum terurut adalah persoalan tersendiri.
5. Kompleksitas Algoritma
1. Kasus terbaik (best case)
Kasus terbaik terjadi bila pivot adalah elemen median sedemikian sehingga
kedua subtabel berukuran relatif sama setiap kali pempartisian.
n/2 n/2
19
2. Kasus terburuk (worst case)
Kasus ini terjadi bila pada setiap partisi pivot selalu elemen maksimum (atau
elemen minimum) tabel.
n
1 n–1
1 n–2
1 n–3
...
1 1
RUNNING TIME
N Bubble
Sort Merge Sort Insertion Sort Quick Sort
100 0,41 0,25 0,30 0,20
200 1,30 0,35 0,90 0,30
300 1,54 0,55 1,80 0,30
400 2,43 0,70 1,39 0,50
500 3,71 0,50 2,35 0,60
600 4,97 0,50 3,17 0,31
700 6,93 0,50 4,28 0,40
800 9,07 0,60 5,40 0,40
900 10,74 0,72 6,83 0,60
1000 13,97 0,80 8,50 0,60
20
6. Kesimpulan
Algoritma sorting merupakan algoritma yang penting didalam pemrograman.
Terdapat banyak sekali jenis algoritma sorting. Namun dalam menjalankan program
sangat perlu dipertimbangkan efisiensi dari program tersebut. Salah satu cara untuk
menganalisa kecepatan algoritma sorting saat running time adalah dengan
menggunakan notasi Big O.
Algoritma sorting mempunyai kompleksitas waktu terbaik, terburuk, dan rata-
rata. Dengan notasi Big O, kita dapat mengoptimalkan penggunaan algoritma
sorting. Sebagai contoh, untuk kasus dimana jumlah masukan untuk suatu
pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge
sort, atau heap sort karena kompleksitas waktu untuk kasuk terburuk adalah O(n log
n). Hal ini tentu akan sangat berbeda jika kita menggunakan algoritma sorting
insertion sort atau bubble sort dimana waktu yang dibutuhkan untuk melakukan
pencarian akan sangat lama. Hal ini disebabkan kompleksitas waktu terburuk untuk
algoritma sorting tersebut dengan jumlah masukan yang banyak adalah O(n2).
21