Anda di halaman 1dari 11

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

1
0
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

1
0
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

1
0
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.

1
0
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 Algor itma 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.

1
0
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.

1
0
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 insertion 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.

1
0
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.

1
0
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.

1
0
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 example
gap := int(gap / 1.25)

i := 0
swaps := 0 //see bubblesort for an explanation

//a single "comb" over the input list


loop until i + gap >= input.size //see
shellsort for similar idea
if input[i] > input[i+gap]
swap(input[i],
input[i+gap])
swaps := 1 // Flag a
swap has occurred, so the
// list is
not guaranteed sorted
end if
i := i + 1
end loop

end loop end function

1
0
Struktur Data Multiplatform

REFERENSI

• www.google.com
• www.wikipedia.com

1
0