COMB SORT

14
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

Transcript of COMB SORT

Page 1: 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

Page 2: COMB SORT

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

Page 3: COMB SORT

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

Page 4: COMB SORT

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.

Page 5: COMB SORT

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.

Page 6: COMB SORT

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.

Page 7: COMB 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.

Page 8: COMB SORT

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.

Page 9: COMB SORT

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.

Page 10: COMB SORT

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

Page 11: COMB SORT

10

Struktur Data Multiplatform

REFERENSI

www.google.com www.wikipedia.com