Abstrak
Sistem komputer yang terdiri dari perangkat keras, perangkat lunak dan
perangkat manusia yang saling berinteraksi dan bekerja sama sehingga
mencapai suatu tujuan tertentu. Tujuan yang dimaksud adalah penyelesaian
suatu pekerjaan atau persoalan dan mungkin saja menganalisis suatu peluang.
Peran algoritma dalam perangkat lunak atau pemograman begitu penting,
sehingga perlu memahami konsep dasar algoritma. Begitu banyak logika
pemograman yang telah diciptakan, untuk kasus yang umum dan juga khusus.
Algoritma Quick sort dan merge sort merupakan suatu strategi pengurutan
(indexing) data, yang termasuk pada metode bagi dua dan selesaikan (divideand-conquer). Algoritma dibutuhkan agar suatu permasalahan dapat diselesaikan
dengan lebih efektif dengan sedikit sumber daya yang dilibatkan dan lebih
efisien dengan durasi waktu yang dibutuhkan sedikit (cepat).
Keyword : algoritma, divide and conquer, quick sort dan merge sort.
Pendahuluan
Sejarah kemunculan algoritma sejalan dengan kemunculan teknologi komputer.
Analisis algoritma menjadi topik bahasan utama dalam disiplin ilmu komputer.
Seorang programmer komputer telah lama menggunakan algoritma untuk
diterapkan pada sistem informasi manajemen yang menjalankan fungsi-fungsi
akuntansi perusahaan yang disebut sistem pemrosesan transaksi (transaction
information system) atau sistem pemrosesan data secara elektronik (Electronic
Data Processing/EDP), yang kemudian berkembang menjadi sistem pendukung
pengambilan keputusan (Decision Support System/DSS).
adalah
unsur
median
kompleksitas
waktunya
adalah
B. Kasus terburuk (worst case) terjadi bila pada setiap partisi pivot selalu
terpilih unsur maksimum atau unsur minimumnya. Kasus ini terjadi jika
tabel
sudah
terurut
menaik/menurun
Didapatkan kompleksitas waktunya
adalah
C. Kasus rata-rata (average case) terjadi jika pivot dipilih secara acak dari
unsur tabel, dan peluang setiap unsur dipilih menjadi pivot adalah sama.
Rata-rata jumlah tingkatan perbandingan diatas semua permutasi urutan
masukan dapat diperkirakan dengan teliti dengan pemecahan hubungan
perulangan
Implementasi Quicksort
Penerapan algoritma quicksort menggunakan antar muka bahasa pemograman
berbasis visual yaitu visual basic 6.0 dengan kumpulan perintah seperti dibawah
ini:
PublicSubQuicksort
(list()AsInteger,ByValminAsLong,ByValmaxAs
Long)
Dimmed_valueAsLong
DimhiAsLong
DimloAsLong
DimiAsLong
Ifmin>=maxThenExit
Subi=Int((maxmin+1)*Rnd+min)
med_value=list(i)list(i)=list(min)
lo=min
hi=max
DoWhilelist(hi)>=med_value
hi=hi1
Ifhi<=loThenExit
DoLoop
Ifhi<=loThenlist(lo)=med_value
ExitDoEnd
Iflist(lo)=list(hi)
lo=lo+1
DoWhilelist(lo)<med_value
lo=lo+1
Iflo>=hiThenExit
DoLoopIflo>=hiThen
lo=hilist(hi)=med_value
ExitDoEnd
Iflist(hi)=list(lo)
Loop Quicksort list(), min, lo1 Quicksort
list(),lo+1,maxEndSub
kompleksitas
waktunya
adalah :
Implementasi Mergesort
Penerapan
algoritma
mergesort
menggunakan
antar
muka
bahasa
pemograman berbasis visual yaitu visual basic 6.0 dengan kumpulan perintah
seperti dibawah ini:
PublicSubMerge(list()AsInteger,ByValbawahAs
Long,ByValtengahAsLong,ByValatasAsLong)
Dimtemp_array()AsInteger
DimtempAsInteger
DimvektorAAsLong
DimvektorBAsLong
DimvektorUtamaAsLong
ReDimtemp_array(bawahToatas)
CopyMemorytemp_array(bawah),
list(bawah),(atasbawah+1)*Len(list(bawah))
vektorA=bawah
vektorB=tengah+1
vektorUtama=bawah
DoWhile(vektorA<=tengah)And(vektorB<=atas)
If(temp_array(vektorA)<=temp_array(vektorB))Then
list(vektorUtama)=temp_array(vektorA)
vektorA=vektorA+1
Elselist(vektorUtama)=temp_array(vektorB)
vektorB=vektorB+1
EndIf
vektorUtama=vektorUtama+1
LoopIfvektorA<=tengahThen
CopyMemorylist(vektorUtama),
temp_array(vektorA),
(tengahvektorA+1)*Len(list(bawah))
EndIf
IfvektorB<=atasThen
CopyMemorylist(vektorUtama),
temp_array(vektorB),
(atasvektorB+1)*Len(list(bawah))
EndIf
EndSub
Pembahasan
Walaupun tiap algoritma pengurutan menawarkan perbedaan metode dan
sudut pandang penyelesaian masalah yang berbeda, namun kompleksitas waktu
yang dibutuhkan tetap menjadi masalah utama yang harus menjadi pertimbangan
untuk menentukan algoritma mana yang lebih baik dan tepat untuk digunakan.
Untuk mengetahui kecepatan waktu tiap algoritma, maka digunakan perangkat
lunak penghitung kecepatan algoritma dalam bahasa pemograman visual basic.
Hal ini digunakan untuk mendukung analisis kecepatan sorting data. Dengan
mengatur perangkat lunak agar banyaknya jumlah n sesuai yang diinput secara acak,
sehingga kemunculan data setiap kali program dijalankan tidak sama dan tidak
dapat diprediksidan interval data antara 100 10000. Pengujian dilakukan disebuah
laptop dengan spesifikasi : platform Windows XP Profesional, processor AMD
2.2 GHz, dan 1GB DDR2 RAM.
Penutup
Pembuatan program komputer tidak terlepas dari algoritma, apalagi program
yang dibuat sangat kompleks. Program dapat dibuat dengan mengabaikan algoritma,
akan tetapi program tersebut memiliki akses yang lambat atau bahkan sangat lambat
dan memakai memori yang banyak. Dalam menguji suatu algoritma, dibutuhkan
Daftar Bacaan
[1] Anonim.Ready-to-Run Visual Basic Algorithms, Second Edition.
http://www.vbhelper.com/vba.htm,diakses 10 Nopember 2008.
[2] Brassard G. and Bratley P., Fundamentals of Algorithmics. Prentice
Hall, NewJersey, 1996.
[3] Munir, Rinaldi. Algoritma Divide and Conquer. Institut Teknologi
Bandung. Bandung2004.
[4] Sedgewick, Robert. Algorithms. Addison Wesley Publishing Company.
1983.