SORTING
ARI NUR IRAWAN
TEKNIK INFORMATIKA
POLITEKNIK BANYUWANGI
2011
BANYUWANGI
JL. Raya Jember KM3 Labanasem Rogojampi, Telp
0333-636780
Makalah ini membahas tentang beberapa algoritma
pengurutan yang biasa digunakan pada lingkungan akademisi. Pengurutan atau
Sorting merupakan suatu proses mengatur susunan data-data menurut syarat
tertentu. Meskipun pengurutan ini sepertinya hanya sebuah masalah klasik dalam
keinformatikaan,namun perannya tidak dapat dipisahkan terutama dalam pengolahan
data. Suatu pengolahan data biasanya akan lebih efisien jika datanya telah
terurut,seperti Binary Search misalnya. Mengingat pentingnya pengurutan
dalam penggunaannya dalam hal keinnformatikaan, maka perlu diketahui algoritma
mana yang sebenarnya paling efisien untuk dipakai. Meskipun suatu algoritma
pengurutan mempunyai kelebihan dan keterbatasan masing-masing, kompleksitas dan
keefisiensiannya tetap harusdipertimbangkan.
Dalam
ilmu komputer, algoritma pengurutan (sorting adalah):
1.
algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan
tertentu atau
2.
prosees pengurutan data yang sebelumnya disusun secara acak sehingga menjadi
tersusun secara teratur menurut suatu aturan tertentu
2.1.1.
Konsep Selection Sort
Algoritma
pengurutan sederhana salah satunya adalah Selection Sort. Ide dasarnya
adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen
struktur data. Untuk sorting ascending (menaik), elemen yang
paling kecil di antara elemen-elemen yang belum urut,disimpan indeksnya, kemudian
dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan
elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting
descending (menurun), elemen yang palingbesar yang disimpan
indeksnya kemudian ditukar. Selection Sort diakui karena kesederhanaan
algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih
rumit dalam situasi tertentu.
Algoritma
ini bekerja sebagai berikut:
1. Mencari
nilai minimum (jika ascending) atau maksimum (jika descending)
dalam sebuah list
2. Menukarkan
nilai ini dengan elemen pertama list
3. Mengulangi
langkah di atas untuk sisa list dengan dimulai pada posisi kedua.
Secara
efisien kita membagi list menjadi duabagian 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.
2.2.1.
Konsep Insertion Sort
Algoritma
insertion sort adalah sebuah algoritma sederhana yang cukup efisien
untuk mengurutkan sebuah list yang hampir terurut. Algorima ini juga bisa
digunakan sebagai bagian dari algoritma yang lebih canggih. Cara kerja
algoritma ini adalah dengan mengambil elemen list satu-per-satu dan
memasukkannya di posisi yang benar seperti namanya. Pada array, list yang baru
dan elemen sisanya dapat berbagi tempat di array, meskipun cukup rumit. Untuk
menghemat memori, implementasinya menggunakan pengurutan di tempat yang
membandingkan elemen saat itu dengan elemen sebelumnya yang sudah diurut, lalu
menukarnya terus sampai posisinya tepat. Hal ini terus dilakukan sampai tidak
ada elemen tersisa di input. Seperti sudah dibahas di bagian pendahuluan,
salahsatu implementasinya pada kehidupan sehari-hari adalah saat kita
mengurutkan kartu remi. Kita ambil kartu satuper-satu lalu membandingkan dengan
kartu sebelumnya untuk mencari posisi yang tepat. Variasi pada umunyayang
dilakukan terhadap array pada insertion sort adalah
sebagai
berikut :
1. Elemen
awal di masukkan sembarang, lalu elemen berikutnya dimasukkan di bagian paling
akhir.
2. Elemen
tersebut dibandingkan dengan elemen ke(x-1). Bila belum terurut posisi elemen
3. sebelumnya
digeser sekali ke kanan terus sampai elemen yang sedang diproses menemukan posisi yang tepat atau sampai elemen
pertama. Setiap pergeseran akan mengganti nilai elemenberikutnya, namun hal ini
tidak menjadi persoalan sebab elemen berikutnya sudahdiproses lebih dahulu.
Pengertian/Konsep
Buble Sort
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.
Bubble
sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara
melakukan penukaran data dengan tepat disebelahnya secara terus menerus 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.
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.
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.
Contoh
Kasus Bubble Sort
Misalkan
kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini
(ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang
terjadi:
Iterasi
ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi
ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi
ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi
ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) ->
proses selesai
Analisis
Algoritma Bubble Sort
Tujuan
dari analisis algoritma adalah untuk mengetahui efisiensi dari
algoritma. Dalam hal ini dilakukan pembandingan antara dua atau lebih algoritma
pengurutan.Tahap analisis adalah melakukan pengecekan program untuk memastikan
bahwa program telah benar secara logika maupun sintak (tahap tracing atau
debugging). Tahap selanjutnya yaitu menjalankan program untuk mengetahui
running time atau waktu komputasi dalam hal ini
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
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
sortkarena kompleksitas waktu untuk kasuk terburuk adalah O(n log
n). Hal ini tentu akan sangatberbeda 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).
Dari
grafik dibawah dapat diketahui buble sort adalah metode yang paling lambat dari
yang lambat-lambat..heheheh..
Grafik
Metode Pengurutan berode O(n2)
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.
Prinsip utama yang diimplementasikan pada algoritma merge-sort
seringkali disebut sebagai pecah-belah dan taklukkan (bahasa Inggris: divide
and conquer). Cara kerja algoritma merge sort adalah membagi larik data
yang diberikan menjadi dua bagian yang lebih kecil. Kedua larik yang baru
tersebut kemudian akan diurutkan secara terpisah. Setelah kedua buah list
tersusun, maka akan dibentuk larik baru sebagai hasil penggabungan dari dua
buah larik sebelumnya. Menurut keefektifannya, alogaritma ini bekerja dengan
tingkat keefektifan
data
dibagi menjadi subkumpulan-subkumpulan yang kemudiansubkumpulan tersebut
diurutkan secara terpisah, dan kemudian digabungkan kembali dengan metode
merging. algoritma ini melakukan metode
pengurutan merge sort juga untuk mengurutkan subkumpulandata tersebut, atau
dengan kata lain, pengurutan dilakukan secara rekursif.
Klasifikasi Algoritma Pengurutan
(sorting)
Exchange
Sort
melakukan
pembandingan antar data, dan melakukan pertukaran apabila urutan yang
didapat
belum sesuai.
Contohnya
: Bubble sort, Cocktail sort, Comb sort, Gnome
sort,
Quicksort.
Selection Sort
mencari
elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan
meletakkannya di posisi tersebut setelah data tersebut ditemukan.
Contohnya
:Selection sort, Heapsort, Smoothsort, Strand sort
Insertion Sort
mencari
tempat yang tepat untuk suatu elemen data yang telah diketahui ke dalam
subkumpulan data yang telah terurut, kemudian melakukan penyisipan (insertion)
data di tempat yang tepat tersebut tepat tersebut.
Contohnya
adalah : Insertion sort, Shell sort, Tree sort, Library sort, Patience sorting.
Non-Comparison Sort
proses
pengurutan data yang dilakukan algoritma ini tidak terdapat pembandingan
antardata,
data diurutkan sesuai dengan pigeon hole principle.
Contohnya
adalah : Radix sort, Bucket sort, Counting sort,
Pigeonhole
sort , Tally sort
makasi bung'
BalasHapusTinjau larik L dengan n = 6 buah elemen di bawah ini yang belum terurut. Urutkan dibawah ini dengan menggunakan metode:
BalasHapusPengurutan Apung (Bubble Sort) menaik
Pengurutan Apung (Bubble Sort) menurun
Pengurutan Selection Sort Maximum menaik
Pengurutan Selection Sort Maximum menurun
25 27 10 8 76 21
1 2 3 4 5 6
gmana ya ngerjainnya,tolong sh
sangat membantu
BalasHapus