Modul 5 - Sorting Algorithm
Modul 5 - Sorting Algorithm
(CCC120)
MODUL SESI 5
SORTING ALGORITHM
DISUSUN OLEH
M.BAHRUL ULUM, S.KOM, M.KOM
Teori
Sorting adalah suatu proses pengurutan data yang sebelumnya
disusun secara acak atau tidak teratur menjadi urut dan teratur menurut
suatu aturan tertentu. Sorting dapat dibedakan menjadi dua jenis yaitu
ascending dan descending. Ascending adalah pengurutan data dari kecil
ke besar, sedangkan descending adalah pengurutan data dari besar ke
kecil. Nah, ada banyak program sorting seperti bubble sort, selection sort,
insertion sort, merge sort, quick sort, dan lain sebagainya.
Dalam aktivitas sehari-hari, kita sering di hadapkan pada perlunya
melakukan suatu sortir (pengurutan). Anak-anak sekolah dasar berbaris
menurut tinggi badannya, petugas pepustakaan menyusun buku-buku
sesuai dengan nomor bukunya, lembar absensi dicetak berdasarkan urutan
abjad nama, dan sebagainya.
Pengurutan biasanya dilakukan untuk tujuan mempermudah
pencarian, misalnya mencari nomor telepon di buku telepon, mengetahui
ranking siswa di sekolah, dan sebagainya.
Jenis Sorting (yang akan dipelajari) adalah :
1. Bubble sort (gelembung)
2. Selection sort (maksimum/minimun)
3. Insertion sort (sisip)
4. Quick sort
5. exchange sort
Bubble Sort
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.
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
Teknik ini adalah dengan membandingkan elemen ke-n (n mulai dari
2 hingga elemen terakhir) dengan elemen-elemen sebelumnya. Bila elemen
yang dibandingkan bernilai lebih kecil, maka tukar posisinya.
Contoh : 8, 3, 7, 4
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.
O *
* O *
Key < 0 Key > 0
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.
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.
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).
Ilustrasi Sorting
1. Bubble Sort
2. Selection Sort
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
n/2 n/2
1 1 1 ...................1...1....1......................... 1 1 1
Kasus ini terjadi bila pada setiap partisi pivot selalu elemen
1 n–1
1 n–2
1 n–3
...
1 1
Kasus ini terjadi jika pivot dipilih secara acak dari elemen tabel, dan
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
Bubble Sort
Time (Ms)
Merge Sort
Insertion Sort
Quick Sort
N Input (Ratusan)
Latihan
1. Jelaskan maksud sebuah program dalam pelaksanaan praktikum
diatas !
2. Buatlah sebuah program yang menunjukkan aktivitas sorting dengan
menggunakan salah satu metode sorting dan jelaskan kenapa
menggunakan metode tersebut !
Daftar Pustaka
a. Data Structures Using C++, Second Edition, D.S. Malik
b. Sukajani, “Struktur data dengan C++”, Mitra Wacana Media.
c. Idra Yatini B, Erliansyah Nasution, “Algoritma & Struktur Data”, Graha
Ilmu
d. Internet