0% menganggap dokumen ini bermanfaat (0 suara)
57 tayangan18 halaman

Modul 5 - Sorting Algorithm

Modul ini membahas algoritma pengurutan atau sorting yang meliputi bubble sort, selection sort, insertion sort, quick sort, dan exchange sort. Beberapa algoritma sorting dijelaskan secara rinci melalui contoh ilustrasi dan kelemahan serta kelebihannya. Modul ini bertujuan untuk memberikan pemahaman dasar mengenai beberapa jenis algoritma sorting yang sering digunakan dalam pemrograman.

Diunggah oleh

wahyu
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
57 tayangan18 halaman

Modul 5 - Sorting Algorithm

Modul ini membahas algoritma pengurutan atau sorting yang meliputi bubble sort, selection sort, insertion sort, quick sort, dan exchange sort. Beberapa algoritma sorting dijelaskan secara rinci melalui contoh ilustrasi dan kelemahan serta kelebihannya. Modul ini bertujuan untuk memberikan pemahaman dasar mengenai beberapa jenis algoritma sorting yang sering digunakan dalam pemrograman.

Diunggah oleh

wahyu
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 18

MODUL STRUKTUR DATA

(CCC120)

MODUL SESI 5
SORTING ALGORITHM

DISUSUN OLEH
M.BAHRUL ULUM, S.KOM, M.KOM

UNIVERSITAS ESA UNGGUL


2020

Universitas Esa Unggul


http://esaunggul.ac.id
0 / 18
SORTING ALGORITHM

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.

Universitas Esa Unggul


http://esaunggul.ac.id
1 / 18
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.
Contoh data awal : 8, 7, 6, 5, 4
Pass 1 : Proses 1, bandingkan 8 (elemen pertama) dengan 7 (elemen
kedua), hasilnya 7, 8, 6, 5, 4.
Proses 2, bandingkan 7 (elemen pertama) dengan 6 (elemen
kedua), hasilnya 6, 8, 7, 5, 4
Proses 3, bandingkan 6 (elemen pertama) dengan 5 (elemen
kedua), hasilnya 5, 8, 7, 6, 4
Proses 4, bandingkan 5 (elemen pertama) dengan 4 (elemen
kedua), hasilnya 4, 8, 7, 6, 5
Pass 2 : Dimulai dengan elemen kedua, dibandingkan dengan elemen
ketiga hingga elemen kelima, berikut hasil-hasilnya :
Proses 1, menghasilkan : 4, 7, 8, 6, 5
Proses 2, menghasilkan : 4, 6, 8, 7, 5
Proses 3, menghasilkan : 4, 7, 8, 7, 6 (urutan pass 2 telah
diperoleh).
Pass 3 : Dimulai dengan elemen ketiga, dibandingkan dengan elemen
keempat hingga elemen kelima, berikut hasil-hasilnya :
Proses 1, menghasilkan : 4, 5, 7, 8, 6
Proses 2, menghasilkan : 4, 5, 6, 8, 7 (urutan pass 3 telah
diperoleh).
Pass 4 : Dimulai dengan elemen keempat, dibandingkan dengan elemen
kelima, dan menghasilkan :
Proses 1, menghasilkan : 4, 5, 6, 7, 8, (urutan pass 3 telah
diperoleh).

Universitas Esa Unggul


http://esaunggul.ac.id
2 / 18
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.

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

Universitas Esa Unggul


http://esaunggul.ac.id
3 / 18
Pada langkah pertama, elemen ke dua akan dibandingkan dengan
elemen pertama, 3 dibandingkan dengan 8, karena 3 lebih kecil dari 8,
maka kedua elemen tersebut saling ditukar tempatnya yang menghasilkan
urutan 3, 8, 7, 4 (dua elemen pertama sudah urut). Pada langkah ke dua,
elemen ke tiga akan dibandingkan dengan elemen ke dua. 7 dibandingkan
dengan 8, terjadi penukaran tempat yang menghasilkan urutan 3, 7, 8, 4.
Selanjutnya, 7 tersebut dibandingkan dengan elemen pertama, yaitu 3.
Tidak terjadi penukaran tempat (tiga elemen pertama sudah urut).
Pada langkah ke tiga, elemen ke empat, yaitu 4 dibandingkan dengan
elemen ke tiga. Angka 4 lebih kecil dari 8, terjadi penukaran tempat, hasil
sementara adalah 3, 7, 4, 8. Angka 4 tadi dibandingkan dengan elemen
pertama, yaitu 3. Karena 4 lebih besar dari 3, maka tidak terjadi penukaran
tempat lagi (empat elemen pertama sudah urut = hasil akhir).
Sub-langkah ke tiganya : 3, 7, 8, 4 (awal)  4 banding 8, tukar
Hasilnya : 3, 7, 4, 8  4 banding 7, tukar
Hasilnya : 3, 4, 7, 8  4 banding 3, tukar
Hasilnya : 3, 4, 7, 8 ( akhir)

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.

Universitas Esa Unggul


http://esaunggul.ac.id
4 / 18
PRINSIP

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

Universitas Esa Unggul


http://esaunggul.ac.id
5 / 18
 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

Gambar 1. Proses ke-1 algoritma Bubble Sorting


Pada gambar diatas, pegecekan dimulai dari data yang paling akhir,
kemudian dibandingkan dengan data di depannya, jika data di depannya
lebih besar maka akan ditukar.

Gambar 2. Proses ke-2 algoritma Bubble Sorting


Pada proses kedua, pengecekan dilakukan sampai dengan data ke-2
karena data pertama pasti sudah paling kecil.

Universitas Esa Unggul


http://esaunggul.ac.id
6 / 18
Gambar 3. Proses ke-3 algoritma Bubble Sorting

Gambar 4. Proses ke-4 algoritma Bubble Sorting

Gambar 5. Proses ke-5 algoritma Bubble Sorting

2. Selection Sort

Universitas Esa Unggul


http://esaunggul.ac.id
7 / 18
Gambar 1. Proses ke-1 Gambar 2. Proses ke-2 algoritma
algoritma Selection Sort Selection Sort

Gambar 3. Proses ke-3 Gambar 4. Proses ke-4 algoritma


algoritma Selection Sort Selection Sort

Gambar 5. Proses ke-5 algoritma Selection Sort

Universitas Esa Unggul


http://esaunggul.ac.id
8 / 18
3. Insertion Sort

Universitas Esa Unggul


http://esaunggul.ac.id
9 / 18
4. Quick sort

Universitas Esa Unggul


http://esaunggul.ac.id
10 / 18
5. Exchange Sort

Universitas Esa Unggul


http://esaunggul.ac.id
11 / 18
Contoh Program
a. Program

Universitas Esa Unggul


http://esaunggul.ac.id
12 / 18
Universitas Esa Unggul
http://esaunggul.ac.id
13 / 18
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

Universitas Esa Unggul


http://esaunggul.ac.id
14 / 18
waktu (utamanya dalam hal sortir data) memiliki tiga kriteria, yaitu waktu
tercepat (best case), waktu rata-rata (average case), dan waktu terburuk
(worth case).
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

n/2 n/2

n/4 n/4 n/4 n/4

n/8 n/8 n/8 n/8 n/8 n/8 n/8 n/8


... ... ... ... ... ... ... ....

1 1 1 ...................1...1....1......................... 1 1 1

2. Kasus terburuk (worst case)

Kasus ini terjadi bila pada setiap partisi pivot selalu elemen

maksimum (atau elemen minimum) tabel.

1 n–1

1 n–2

1 n–3
...

1 1

Universitas Esa Unggul


http://esaunggul.ac.id
15 / 18
3. Kasus rata-rata (average case)

Kasus ini terjadi jika pivot dipilih secara acak dari elemen tabel, dan

peluang setiap elemen dipilih menjadi pivot adalah sama.

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

Perbandingan Running Time Algoritme Sorting

Bubble Sort
Time (Ms)

Merge Sort
Insertion Sort
Quick Sort

N Input (Ratusan)

Universitas Esa Unggul


http://esaunggul.ac.id
16 / 18
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).

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

Universitas Esa Unggul


http://esaunggul.ac.id
17 / 18

Anda mungkin juga menyukai