COMB SORT
-
Upload
arief-rachman -
Category
Documents
-
view
643 -
download
13
Transcript of COMB SORT
10
Struktur Data Multiplatform
ALGORITMA
Algoritma memegang peranan penting dalam bidang
algoritma, tetapi jangan heran bila seandainya ada pemrograman.
Sebegitu pentingnya suatu algoritma, orang lain yang membuat
program seperti program sehingga perlu dipahami konsep dasar
algoritma. anda tersebut memiliki akses yang lebih cepat dan Apalagi
untuk seorang programer, tentu diperlukan memakai memori yang
sangat sedikit.suatu algoritma sehingga dapat membuat program
yang lebih efektif dan efisien. Bagi kebanyakan orang,
Analisis algoritma adalah bahasan utama dalam ilmu
algoritma sangat membantu dalam memahami konsep komputer.
Dalam menguji suatu algoritma, logika pemrograman. dibutuhkan
beberapa kriteria untuk mengukur efisiensi algoritma.
PENGURUTAN DATA
Proses pengurutan data (sorting) seringkali menjadi bagian
yang krusial dalam suatu pengolahan data. Pengurutan adalah
materi yang penting dalam bidang algoritma dan pemrograman
khususnya pada pengembangan aplikasi perangkat lunak komputer
dan internet. Pengurutan juga penting dalam data compression yang
sangat diperlukan pada penyimpanan dan transfer data. Dalam
berbagai aplikasi apalagi yang melibatkan ribuan bahkan jutaan data,
pengurutan bisa menghabiskan banyak waktu (time consuming) dari
keseluruhan pengolahan data.
Salah seorang yang mengamati bahwa proses pengurutan
data memerlukan banyak waktu adalah Schindler (2001) untuk
aplikasi kompresi data (data compression). Schindler mengajukan
10
Struktur Data Multiplatform
metode untuk mengatasi lamanya proses ini. Dia menggunakan
posisi data dalam blok data sebagai kunci pengurutan untuk
perbandingan selanjutnya. Posisi ini selalu berbeda untuk data yang
berbeda. Dengan menggunakan posisi sebagai kunci pengurutan,
akan mengurangi banyaknya karakter yang digunakan untuk proses
pengurutan. Untuk aplikasi kompresi data Giancarlo dkk (2007)
memperkenalkan kerangka optimisasi kombinatorik yang
memperhatikan kelas permutasi data fungsi waktu yang
menghubungkan antar data untuk menyelidiki efisiensi proses
pengurutan. Sedangkan untuk aplikasi komunikasi data Tsai dan
Tseng (2007) mengembangkan pendekatan pengurutan data untuk
menghindari masalah lamanya proses sinkronisasi blok data.
Oleh karena pentingnya dari segi aplikasi dan lamanya
proses, maka pengurutan telah menjadi perhatian banyak peneliti
sejak lama. Clement dan Quinn (1995) mengembangkan algoritma
untuk menghindari proses pengulangan (overlapping) yang sering
terjadi pada pengurutan. Mikkilineni dan Su (1998) mengevaluasi
algoritma-algoritma pengurutan pada Local Area Network (LAN).
Wheat dan Evans (1992), serta Li dkk (1993) mengajukan algoritma
pengurutan paralel pada banyak prosesor untuk mengatasi lamanya
proses. Pengurutan juga diperhatikan dari sudut pandang
matematika oleh beberapa ahli. Iyengar dan Barret (1980)
mengembangkan model matematika untuk mengevaluasi metode
pengurutan dalam satu komputer. Matias dan Viskhin (1991)
menggunakan pemodelan matematika untuk pengurutan paralel,
serta Han (2001) mengajukan model pengurutan perbaikan yang
lebih cepat.
Secara umum pengurutan meliputi pengurutan internal dan
eksternal. Pengurutan dapat juga dilakukan pada satu prosesor atau
banyak prosesor. Dengan demikian proses pengurutan dapat
dilakukan secara internal pada satu prosesor, internal pada banyak
10
Struktur Data Multiplatform
prosesor, eksternal pada satu prosesor dan eksternal pada banyak
proses. Dengan banyak prosesor (multi processors) proses
pengurutan dapat dipercepat dan berlaku untuk berbagai jenis data,
Taniar & Rahayu (2002)
Keuntungan Data Terurut
♥ Mempercepat pencarian
♥ Mudah menentukan data maksimum / minimum
Pengurutan Data Terbagi Dua Kelompok
♥ Pengurutan Internal adalah pengurutan terhadap sekumpulan data
yang di simpan di dalam memori utama computer. umumnya
struktur data yang di pakai adalah larik, sehingga pengurutan
internal di sebut juga pengurutan larik.
♥ Pengurutan Eksternal adalah pengurutan data yang di simpan di
dalam memori sekunder, biasanya data bervolume besar sehingga
tidak mampu di muat semuanya dalam memori computer, di sebut
juga pengurutan arsip (file), karena struktur eksternal yang di pakai
adalah arsip.
Definisi Sorting
☻Pengurutan bilangan, huruf, kata, atau nilai lainnya sesuai dengan
aturan tertentu
☻Mengilustrasikan pemecahan masalah
☻Teknik penggunaan seleksi, perulangan, method, dan array
☻Demonstrasi performa/kompleksitas algoritma
☻Mempercepat proses searching
10
Struktur Data Multiplatform
Klasifikasi Algoritma Pengurutan (Sorting)
♥ Exchange Sort
melakukan perbandingan antara data, dan melakukan pertukaran
apabila urutan yang di dapat di dapat belum selesai.
10
Struktur Data Multiplatform
BUBBLE SORT
Algoritma bubble sort adalah salah satu algoritma pengurutan
yang paling simple, baik dalam hal pengertian maupun
penerapannya. Ide dari algoritma ini adalah mengulang proses
pembandingan antara tiap-tiap elemen array dan menukarnya
apabila urutannya salah.
Pembandingan elemen-elemen ini akan terus diulang hingga
tidak perlu dilakukan penukaran lagi. Algoritma ini termasuk
dalam golongan algoritma comparison sort, karena menggunakan
perbandingan dalam operasi antar elemennya.
♥ Kelebihan dan Kekurangan Algoritma Bubble Sort
Setiap algoritma memiliki kelebihan dan
kekurangannya masing-masing, demikian pula dengan
algoritma Bubble Sort. Kelebihan dan kekurangan dari algoritma
Bubble Sort dapat dilihat dari karakteristik algoritma Bubble
Sort itu sendiri. Berikut ini adalah beberapa kelebihan dan
kekurangan dari algoritma Bubble Sort.
♥ Beberapa kelebihan dari algoritma Bubble Sort adalah sebagai
berikut :
☻ Algoritma yang simple Mudah untuk diubah menjadi kode.
☻Definisi terurut terdapat dengan jelas dalam algoritma.
☻Cocok untuk pengurutan data dengan elemen kecil telah
terurut.
10
Struktur Data Multiplatform
Algoritma yang simpel. Hal ini dilihat dari proses pengurutan
yang hanya menggunakan rekurens dan perbandingan, tanpa
penggunaan proses lain. Algoritma pengurutan lain cenderung
menggunakan proses lain, misalnya proses partisi pada algoritma
Quick Sort.[4]
Mudah untuk diubah menjadi kode. Hal ini diakibatkan oleh
simpelnya algoritma Bubble Sort, sehingga kecil kemungkinan terjadi
kesalahan sintax dalam pembuatan kode.
Definisi terurut terdapat dengan jelas dalam algoritma.
Definisi terurut ini adalah tidak adanya satu kalipun swap pada satu
kali pass. Berbeda dengan algoritma lain yang seringkali tidak
memiliki definisi terurut yang jelas tertera pada algoritmanya,
misalnya Quick Sort yang hanya melakukan partisi hingga hanya
ada dua buah nilai yang bisa dibandingkan.
Cocok untuk pengurutan data dengan elemen kecil telah
terurut. Algoritma Bubble Sort memiliki kondisi best case dengan
kompleksitas algoritma O(n)
.
Beberapa kekurangan dari algoritma Bubble Sort adalah sebagai
berikut :
☻Tidak efektif dalam pengurutan data berskala besar.
☻Langkah pengurutan yang terlalu panjang.
Dalam makalah ini kami hanya akan membahas tentang
COMB SORT hasil varian dari BUBBLE SORT, karena dari data
yang kami temukan COMB SORT juga dikenal dengan sebutan
SHELL SORT.
10
Struktur Data Multiplatform
COMB SORT
Comb Sort atau Sisir semacam adalah relatif sederhana
algoritma sorting awalnya dirancang oleh Wlodzimierz Dobosiewicz
pada tahun 1980. Kemudian ditemukan kembali dan dipopulerkan
oleh Stephen Lacey dan Richard Box dengan Majalah Byte artikel
yang diterbitkan pada bulan April 1991. Comb short meningkatkan
pada bubble sort, dan algoritma rival seperti Quicksort .Ide dasarnya
adalah untuk menghilangkan turtle, atau nilai-nilai kecil dekat akhir
daftar, karena dalam gelembung semacam ini memperlambat
pengurutan turun sangat., (rabbit, besar nilai-nilai sekitar awal daftar,
tidak menimbulkan masalah dalam bubble sort.).
Dalam bubble sort, bila terdapat dua elemen yang
dibandingkan, mereka selalu memiliki kesenjangan (jarak dari satu
sama lain) Ide dasar dari comb sort adalah bahwa kesenjangan ini
dapat jauh lebih dari satu. ( semacam Shell juga didasarkan pada ide
ini, tetapi merupakan modifikasi dari i nsertion sort daripada bubble
sort.) .
Gap yang mulai sebagai panjang daftar yang diurutkan dibagi
dengan faktor psikiater (umumnya 1,3 : lihat di bawah), dan daftar
diurutkan dengan nilai (dibulatkan ke integer jika diperlukan) untuk
jeda. Kemudian kesenjangan yang dibagi dengan faktor psikiater
lagi, daftar tersebut diurutkan dengan kesenjangan baru, dan proses
mengulang sampai kesenjangan adalah Pada titik ini, seperti sisir
terus menggunakan celah dari 1 sampai daftar diurutkan
sepenuhnya. Tahap akhir semacam itu dengan demikian setara
dengan semacam gelembung, tapi kali ini turtle paling telah
ditangani, sehingga bubble sort akan efisien.
10
Struktur Data Multiplatform
Kekurangan terbesar dari bubble sort adalah komplisitas
algoritma yang terlalu besar, baik dalam average case maupun worst
case, sehingga sering kali disebut sebagai algoritma primitive, brute
force, algoritma naïf. Ide dari comb sort adalah perbandingan antara
elemen tidak dengan elemen sebelahnya, namun dimulai dengan
gap sebesar panjang list data yang akan di urutkan, di bagi dengan
suatu factor di sebut shrink factor. Sebagai contoh, suatu list dengan
jumlah elemen tujuh, maka dengan shrink factor sebesar 1.3,
masing-masing gap adalah 5,3,2,1. Dengan kata lain pada awalnya
elemen ke -1 di bandingkan dengan elemen ke-6 kemudian, dilihat
apakah di tukar atau tidak. Setelah itu ulangi dengan melakukan
dengan sorting dengan gap 3,kemudian 2,1, dan seterusnya. Hasil
kompleksitas algoritma worst case dari comb sort adalah O(n log n).
Shrink Factor atau Faktor Kecilkan
Psikiater faktor memiliki efek besar pada efisiensi comb sort..
Dalam artikel asli, penulis menyarankan 1,3 setelah mencoba
beberapa daftar acak dan menemukannya secara umum yang paling
efektif., Nilai terlalu kecil memperlambat algoritma ke bawah karena
perbandingan lebih harus dilakukan, sedangkan nilai yang terlalu
besar tidak mungkin membunuh kura-kura cukup praktis.
menjelaskan perbaikan comb sort menggunakan nilai dasar
.
sebagai faktor psikiater. Hal ini juga berisi implementasi pseudo
dengan meja celah yang telah ditetapkan.
10
Struktur Data Multiplatform
Combsort11
Dengan psikiater faktor sekitar 1.3, hanya ada tiga cara yang
mungkin untuk daftar kesenjangan berakhir: (9, 6, 4, 3, 2, 1), (10, 7,
5, 3, 2, 1), atau (11, 8, 6, 4, 3, 2, 1. Percobaan menunjukkan bahwa
perbaikan kecepatan yang signifikan dapat dilakukan jika
kesenjangan yang ditetapkan sampai 11 setiap kali dinyatakan akan
menjadi 9 atau 10. Variasi ini disebut Combsort11.
Jika salah satu urutan yang dimulai dengan 9 atau 10 yang
digunakan, lintas terakhir dengan jarak 1 kurang cenderung
sepenuhnya menyortir data, mengharuskan melewati lain dengan
jarak 1. Data diurutkan bila tidak ada swap dilakukan selama lulus
dengan kesenjangan = 1.
Hal ini juga memungkinkan untuk menggunakan tabel standar,
untuk memilih yang kesenjangan untuk menggunakan setiap lulus.
Combsort dengan akhir yang berbeda
Seperti algoritma efisien banyak jenis lainnya (seperti
semacam cepat atau menggabungkan jenis ), combsort lebih efektif
dalam melewati awal yang daripada selama melewati akhir, ketika itu
mirip bubble sort . Combsort dapat dibuat lebih efektif jika metode
pengurutan berubah setelah mencapai angka kesenjangan cukup
kecil. Sebagai contoh, sekali kesenjangan mencapai ukuran sekitar
10 atau lebih kecil, berhenti combsort dan melakukan yang
sederhana seperti gnome atau semacam cocktail , atau, bahkan
lebih baik, sebuah insertion sort , secara keseluruhan akan
meningkatkan efisiensi semacam itu.
10
Struktur Data Multiplatform
Kelebihan Comb sort
♥ tidak ada perlu melacak swap selama mengurutkan lolos ke tahu
apakah menyortir harus berhenti atau tidak.
♥ cukup baik untuk mempercepat turtle pada elemen list dan juga
memiliki kompleksitas yang cukup baik yaitu n log n.
Kelemahan
♥ Tidak stabil pada saat pengurutan.
PSEUDOCODE COMB SORT :
function combsort(array input)gap := input.size //initialize gap size
loop until gap <= 1 and swaps = 0//update the gap value for a next comb. Below
is an examplegap := int(gap / 1.25)
i := 0swaps := 0 //see bubblesort for an explanation
//a single "comb" over the input listloop until i + gap >= input.size //see
shellsort for similar ideaif input[i] > input[i+gap]
swap(input[i],input[i+gap])
swaps := 1 // Flag aswap has occurred, so the
// list isnot guaranteed sorted
end ifi := i + 1
end loop
end loop end function
10
Struktur Data Multiplatform
REFERENSI
www.google.com www.wikipedia.com