SlideShare a Scribd company logo
1 of 3
Download to read offline
Keudekupi.com


Visualisasi Metode Pengurutan
Kontribusi: Taufik Abidin
Saturday, 09 September 2006


 Mata kuliah Struktur Data merupakan salah satu mata kuliah yang ajarkan pada banyak program studi ilmu komputer.
Mata kuliah ini mempelajari struktur data dan algoritma diantaranya array, linked list, stack, queue, table hash, heap,
metode pengurutan, metode pencarian, binary tree dan banyak lagi. Salah satu cara termudah memahami materi mata
kuliah ini adalah dengan cara memvisualisasikan materinya secara langsung, misalnya algoritma pengurutan. Tanpa
visualisasi, algoritma pengurutan yang dipelajari harus dibayangkan oleh masing-masing orang. Hal ini tentunya tidaklah
mudah, paling tidak didukung oleh beberapa alasan berikut: pertama, seringnya terjadi pertukaran data dari suatu posisi
ke posisi lain selama proses pengurutan berlangsung. Kedua, sulitnya membayangkan dan mengingat posisi data yang
berpindah dan data yang tidak berpindah. Ketiga, pertukaran dan perpindahan data tergantung kepada metode
pengurutuan yang digunakan. Tulisan ini membahas program visualisasi metode pengurutan dasar: bubble sort,
selection sort dan insertion sort. Tujuannya adalah memperlihatkan perubahan posisi data dan menghitung secara tepat
jumlah perbandingan dan pertukaran data selama proses pengurutan berlangsung. Implementasi program visualisasi ini
menggunakan bahasa pemrograman Java. Program ini merupakan aplikasi applet yang terdiri dari 6 class meliputi:
SortItem, Control, SortAlgoritm, BubbleSortAlgorithm, SelectionSortAlgorithm dan InsertionSortAlgorithm. Khusus class
SortItem dan SortAlgorithm dikembangkan dan dimodifikasi dari program aslinya yang ditulis oleh James Gosling dari
Sun Microsystems pada tahun 1997.

Metode PengurutanSecara umum, metode pengurutan dapat dikelompokkan dalam 2 kategori yaitu metode pengurutan
sederhana (elementary sorting methods) dan metode pengurutan lanjut (advanced sorting methods). Metode pengurutan
sederhana meliputi bubble sort, selection sort dan insertion sort. Sedangkan metode pengurutan lanjut diantaranya shell
sort, quick sort, merge sort dan radix sort. Metode bubble sort merupakan metode pengurutan yang menggunakan
konsep gelembung. Perbandingan data dilakukan dari posisi pertama atau posisi terakhir bergeser satu persatu sampai
semua data dibandingkan [3], [4]. Metode selection sort merupakan perbaikan dari metode bubble sort dengan
mengurangi jumlah perbandingan [4]. Selection sort merupakan metode pengurutan yang mencari nilai data terbesar
atau terkecil dan kemudian menempatkannya pada posisi yang sebenarnya, dimulai dari data diposisi 0 hingga data
diposisi N-1. Sedangkan metode insertion sort adalah metode pengurutan yang biasa dipakai oleh pemain kartu dalam
mengurutkan kartunya, yaitu menyisipkan kartu dengan nilai yang lebih kecil ke posisi sebelum kartu
pembandingnya.Gambar 1. Hirarki class program visualisasi. Class SortItem menurunkan sifat class applet yang
memiliki tombol-tombol pengatur visualisasi yang diimplementasi di class Controls. SortItem memiliki algoritma
pengurutan (SortAlgorithm) yang merupakan abstract class yang kemudian diturunkan sifatnya oleh class
BubbleSortAlgorithm, SelectionSortAlgorithm, dan InsertionSortAlgorithm. Metode Pengacakan (Scramble) Dalam
visualisasi ini, data direpresentasikan dalam bentuk diagram batang sebanyak 25 buah. Tinggi dan posisi diagram
batang diperoleh secara acak menggunakan metode scramble yang ditulis dalam kelas SortItem sebagai berikut:                                  priv
void scramble(){                    int item[] = new int[25];     double f = width / (double) item.length;       for (int i = item.length; --i >
= (int)(i * f) + 10;    }      int seed = item.length-1;        for (int i = item.length; --i >= 0;){    int j = (int)(seed * Math.random()
temp = item[i];          item[i] = item[j];        item[j] = temp;        }     arr = item;

           } Nilai dari variabel f merupakan lebar dari diagram batang. Perulangan for…loop yang pertama memberikan
nilai kepada array item, tetapi belum teracak. Sedangkan pada perulangan for…loop yang kedua, nilai j diacak dan
kemudian data diposisi i ditukar dengan data diposisi j. Gambar 2. berikut memperlihatkan tampilan data setelah diacak
dan setelah terurut yang dijalankan menggunakan appletviewer command, dan gambar 3 bila program dijalankan melalui
browser.



Gambar 2. Tampilan setelah diacak dan setelah terurut.



Gambar 3. Program dijalankan melalui browser.

Teknik Penggambaran

Teknik penggambaran merupakan kunci utama dalam program visualisasi ini. Teknik penggambaran yang tidak benar
mengakibatkan visualisasi menjadi tidak halus. Sebagai contoh, bila terdapat 3 buah data yang digambarkan dalam
bentuk diagram batang masing-masing bernilai 10, 15, dan 5, yang kemudian selama proses pengurutan mengalami
pertukaran menjadi 10, 5, dan 15, maka cara penggambaran perubahan tersebut dapat diilustrasikan sebagai berikut:

Gambar 3. Teknik penggambaran perubahan data dalam program visualisasi.

Dari ilustrasi di atas dapat dilihat bahwa penggambaran dilakukan dalam 2 tahap. Tahap pertama adalah menggambar
diagram batang dengan lebar wbar setinggi height – nilai data. Sebagai contoh, bila nilai data = 5, maka 20
http://www.keudekupi.com                                Dirancang Menggunakan Joomla!                      Generated: 21 November, 2009, 04:00
Keudekupi.com




– 5 = 15. Warna dari diagram batang ini adalah sama dengan warna latar belakang. Penggambaran dimulai dari
koordinat y = 0 dengan dx merupakan koordinat x dari diagram batang yang berubah sesuai urutan dari diagram batang.
Sintaksnya dalam Java adalah:g.fillRect(dx, 0, wbar, height-arr[i]);

Tahap kedua adalah menggambar diagram batang warna hitam dengan lebar wbar setinggi nilai data dengan koordinat
y = height – nilai data. Sebagai contoh, bila nilai data = 5, maka y = 15. Sintaknya dalam Java adalah:
g.fillRect(dx, height-arr[i], wbar, arr[i]);

Berikut kode lengkap dari metode paint untuk menggambarkan perubahan data.                     public void paint(Graphics g){            int
item[] = arr;        int nbar = 25;        int wbar = (int)(width / nbar);         int dx = width - wbar;          g.setColor(getBackgroun
= item.length; --i >= 0; dx -= wbar){              g.fillRect(dx, 0, wbar, height-arr[i]);        }          dx = width - wbar;
g.setColor(Color.darkGray);            for (int i = item.length; --i >= 0; dx -= wbar){             g.fillRect(dx, height-arr[i], wbar, arr[i]);
     if (h1 >= 0){             g.setColor(Color.red);               dx = h1 * wbar;             g.drawLine(dx, 0, dx, height-1);              }
g.setColor(Color.blue);              dx = h2 * wbar;               g.drawLine(dx, 0, dx, height-1);            }      }


Hasil Pengamatan

Metode Bubble Sort

Perhatikan bahwa jumlah pertukaran dan perbandingan data tidaklah tetap, perbedaan tergantung pada keadaan awal
data setelah diacak. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode bubble
sort. Pengacakan Jumlah Total
Pertukaran Data Perbandingan
Data 1 155279 2 127 272 3 137 245 4 142 297 5 151 294 6 138 285 7 178 300 8 165 272 9 156 285 10 175 300 Rata-rata 152

Jumlah rata-rata pertukaran untuk 10 kali pengacakan adalah 152 kali, sedangkan rata-rata jumlah perbandingan adalah
sebanyak 283 kali. Tetapi bila data pada awalnya terurut, maka untuk 25 jumlah data, jumlah pertukaran data sebanyak
0 kali dengan jumlah perbandingan sebanyak 24 kali.


Metode Selection Sort

Jumlah pertukaran data dengan metode ini tidak selalu tetap namun tergantung pada keadaan awal data. Sedangkan
jumlah perbandingan data selalu tetap. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode
selection sort. Pengacakan Jumlah Total
Pertukaran Data Perbandingan Data 1 23325
 2 24325
 3 21325
 4 22325
 5 23325
 622
325
 7 21325
 8 20325
 9 23325
 10 22325
 Rata-rata 22325


Terlihat bahwa jumlah pertukaran data turun drastis dibandingkan pengurutan menggunakan metode bubble sort, karena
memang metode selection sort diciptakan untuk memperbaiki metode bubble sort mengurangi jumlah perbandingan [4].
Jumlah perbandingan data selalu tetap dan tidak tergantung pada keadaan awal data. Bila data awal dalam keadaan
sudah terurut, maka untuk jumlah data yang sama, total pertukaran data sebanyak 0 kali dengan jumlah perbandingan
tetap 325 kali.


Metode Insertion Sort

Hasil pengamatan menunjukkan bahwa dengan jumlah data dan jumlah pengacakan yang sama, metode insertion sort
bekerja lebih cepat dibandingkan dengan metode bubble sort dan selection sort (untuk mencatat waktu secara lebih
tepat, mungkin program perlu dimodifikasi sehingga waktu proses pengurutan dapat dihitung secara tepat). Jumlah
pertukaran data dengan metode ini juga tergantung pada keadaan awal data yaitu rata-rata sebanyak 136 kali (dari 10
kali pengamatan), dan jumlah perbandingan data selalu 300 kali. Berikut tabulasi hasil visualisasi menggunakan metode
insertion sort. Pengacakan Jumlah Total
http://www.keudekupi.com                               Dirancang Menggunakan Joomla!                      Generated: 21 November, 2009, 04:00
Keudekupi.com




Pertukaran Data Perbandingan Data 1149300 2138300 3168300 4157300 5102300 6106
300 7122
300 8123
300 9145
300 10148
300 Rata-rata136
300



Penutup

Hasil pengamatan menunjukkan bahwa dengan program visualisasi, proses pengurutan dapat diilustrasikan secara
cepat, mudah dan berulang-ulang. Program visualisasi juga memperlihatkan secara jelas bagaimana proses pertukaran
data terjadi, total perbandingan dan jumlah pertukaran data yang diperlukan. Selamat mencoba dan jangan lupa,
kembangkan untuk hal-hal lain yang menarik.


Referensi

1. Flanigan, David, Java in a Nutshell: A Desktop Quick Reference, 2nd edition, O’Reilly & Associates Inc.
California, 1997.
2. Savitch, Walter, Java: An Introduction to Computer Science & Programming, Prentice Hall Inc, New Jersey, 1999.
3. Sedgewich, Robert, Algorithms in C, 3rd edition, Addison-Wesley Publishing, 1998.
4. Waite, Mitchell, Data Structures and Algorithms in Java, Waite Group Press, California, 1998.




http://www.keudekupi.com                        Dirancang Menggunakan Joomla!               Generated: 21 November, 2009, 04:00

More Related Content

What's hot

3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogramRoziq Bahtiar
 
Bab 11 citra biner
Bab 11 citra binerBab 11 citra biner
Bab 11 citra binerSyafrizal
 
Struktur data (bubble sort)
Struktur data (bubble sort)Struktur data (bubble sort)
Struktur data (bubble sort)Ahmad Irham
 
TM pengolahan citra digital
TM pengolahan citra digitalTM pengolahan citra digital
TM pengolahan citra digitalhegie13
 
Analisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingAnalisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingDea Rokhmatun Iradewa
 
Bab ii keg pembel 6 array
Bab ii keg pembel 6  arrayBab ii keg pembel 6  array
Bab ii keg pembel 6 array087dwi
 
Modul struktur data_affif
Modul struktur data_affifModul struktur data_affif
Modul struktur data_affifSejahtera Affif
 
Tugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digitalTugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digitalanggysanggy
 
Materi 1 Konsep Citra
Materi 1 Konsep CitraMateri 1 Konsep Citra
Materi 1 Konsep Citradedidarwis
 
Materi kuliah 02 array part 2
Materi kuliah 02   array part 2Materi kuliah 02   array part 2
Materi kuliah 02 array part 2Budi Yono
 
Makalah pencarian dan pengurutan data
Makalah pencarian dan pengurutan dataMakalah pencarian dan pengurutan data
Makalah pencarian dan pengurutan dataAli Must Can
 
11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarianWandi Parlente
 

What's hot (19)

3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogram
 
Pcd 4
Pcd 4Pcd 4
Pcd 4
 
Bab 11 citra biner
Bab 11 citra binerBab 11 citra biner
Bab 11 citra biner
 
10 algo sorting
10 algo sorting10 algo sorting
10 algo sorting
 
Struktur data (bubble sort)
Struktur data (bubble sort)Struktur data (bubble sort)
Struktur data (bubble sort)
 
Algoritma Sorting
Algoritma SortingAlgoritma Sorting
Algoritma Sorting
 
TM pengolahan citra digital
TM pengolahan citra digitalTM pengolahan citra digital
TM pengolahan citra digital
 
Analisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingAnalisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah Sorting
 
Bab ii keg pembel 6 array
Bab ii keg pembel 6  arrayBab ii keg pembel 6  array
Bab ii keg pembel 6 array
 
Modul struktur data_affif
Modul struktur data_affifModul struktur data_affif
Modul struktur data_affif
 
Tugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digitalTugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digital
 
Materi 1 Konsep Citra
Materi 1 Konsep CitraMateri 1 Konsep Citra
Materi 1 Konsep Citra
 
Fungsi grafik di matlab
Fungsi grafik di matlabFungsi grafik di matlab
Fungsi grafik di matlab
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Materi kuliah 02 array part 2
Materi kuliah 02   array part 2Materi kuliah 02   array part 2
Materi kuliah 02 array part 2
 
Pengurutan (sorting )
Pengurutan (sorting )Pengurutan (sorting )
Pengurutan (sorting )
 
Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)
 
Makalah pencarian dan pengurutan data
Makalah pencarian dan pengurutan dataMakalah pencarian dan pengurutan data
Makalah pencarian dan pengurutan data
 
11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian
 

Viewers also liked

Bym Compensation Plan V1.3
Bym Compensation Plan V1.3Bym Compensation Plan V1.3
Bym Compensation Plan V1.3Stephen Bohn
 
Changer and challenger -Camp remaja 2013
Changer and challenger -Camp remaja 2013 Changer and challenger -Camp remaja 2013
Changer and challenger -Camp remaja 2013 Chris Naa
 
Sesi III - retreat HSK, 16-18 Maret 2012
Sesi III - retreat HSK, 16-18 Maret 2012Sesi III - retreat HSK, 16-18 Maret 2012
Sesi III - retreat HSK, 16-18 Maret 2012Chris Naa
 
Mengikuti Kehendak Allah
Mengikuti Kehendak AllahMengikuti Kehendak Allah
Mengikuti Kehendak AllahChris Naa
 
Give Me your hand, Camp Remaja 2011
Give Me your hand, Camp Remaja 2011Give Me your hand, Camp Remaja 2011
Give Me your hand, Camp Remaja 2011Chris Naa
 
Kontribusi alumni
Kontribusi alumniKontribusi alumni
Kontribusi alumniChris Naa
 

Viewers also liked (8)

Bym Compensation Plan V1.3
Bym Compensation Plan V1.3Bym Compensation Plan V1.3
Bym Compensation Plan V1.3
 
Bym Opportunity
Bym OpportunityBym Opportunity
Bym Opportunity
 
Changer and challenger -Camp remaja 2013
Changer and challenger -Camp remaja 2013 Changer and challenger -Camp remaja 2013
Changer and challenger -Camp remaja 2013
 
Sesi III - retreat HSK, 16-18 Maret 2012
Sesi III - retreat HSK, 16-18 Maret 2012Sesi III - retreat HSK, 16-18 Maret 2012
Sesi III - retreat HSK, 16-18 Maret 2012
 
Bug People Company Profile
Bug People Company ProfileBug People Company Profile
Bug People Company Profile
 
Mengikuti Kehendak Allah
Mengikuti Kehendak AllahMengikuti Kehendak Allah
Mengikuti Kehendak Allah
 
Give Me your hand, Camp Remaja 2011
Give Me your hand, Camp Remaja 2011Give Me your hand, Camp Remaja 2011
Give Me your hand, Camp Remaja 2011
 
Kontribusi alumni
Kontribusi alumniKontribusi alumni
Kontribusi alumni
 

Similar to File

Tugas selamat riady algoritma
Tugas selamat riady algoritmaTugas selamat riady algoritma
Tugas selamat riady algoritmaSelamatriady
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_stringRoziq Bahtiar
 
Tugas1
Tugas1Tugas1
Tugas1Av Ri
 
Makalah Algoritma DAA 1
Makalah Algoritma DAA 1Makalah Algoritma DAA 1
Makalah Algoritma DAA 1asep lufian
 
Paper Metode Sorting
Paper Metode SortingPaper Metode Sorting
Paper Metode SortingNurul Habibah
 
TM pengolahan citra digital
TM pengolahan citra digitalTM pengolahan citra digital
TM pengolahan citra digitalFiki Mardani
 
CUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdf
CUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdfCUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdf
CUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdfRahmatTaufiqSigit
 
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianLaporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianShofura Kamal
 
[ESPA4123] INISIASI 2.ppt
[ESPA4123] INISIASI 2.ppt[ESPA4123] INISIASI 2.ppt
[ESPA4123] INISIASI 2.pptMarliLusi
 
Laporan 1 penngantar program r
Laporan 1 penngantar program rLaporan 1 penngantar program r
Laporan 1 penngantar program rKhair Norrasid
 
Rifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).pptRifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).pptFaldoPku
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data SortingBintangWijaya5
 

Similar to File (20)

Tugas selamat riady algoritma
Tugas selamat riady algoritmaTugas selamat riady algoritma
Tugas selamat riady algoritma
 
Pengurutan (Sorting)
Pengurutan (Sorting)Pengurutan (Sorting)
Pengurutan (Sorting)
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
 
Tugas1
Tugas1Tugas1
Tugas1
 
Makalah Algoritma DAA 1
Makalah Algoritma DAA 1Makalah Algoritma DAA 1
Makalah Algoritma DAA 1
 
Sorting insert binary
Sorting insert binarySorting insert binary
Sorting insert binary
 
Paper Metode Sorting
Paper Metode SortingPaper Metode Sorting
Paper Metode Sorting
 
TM pengolahan citra digital
TM pengolahan citra digitalTM pengolahan citra digital
TM pengolahan citra digital
 
CUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdf
CUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdfCUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdf
CUSTOMER SEGMENTATION ANALYSIS WITH PYTHON.pdf
 
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianLaporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
 
[ESPA4123] INISIASI 2.ppt
[ESPA4123] INISIASI 2.ppt[ESPA4123] INISIASI 2.ppt
[ESPA4123] INISIASI 2.ppt
 
tugas algoritma
tugas algoritmatugas algoritma
tugas algoritma
 
Ayuk pcd
Ayuk pcdAyuk pcd
Ayuk pcd
 
Tugas Algoritma
Tugas AlgoritmaTugas Algoritma
Tugas Algoritma
 
Laporan 1 penngantar program r
Laporan 1 penngantar program rLaporan 1 penngantar program r
Laporan 1 penngantar program r
 
Msw a4 format
Msw a4 formatMsw a4 format
Msw a4 format
 
Siti rohmatul khoiriah
Siti rohmatul khoiriahSiti rohmatul khoiriah
Siti rohmatul khoiriah
 
Rifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).pptRifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).ppt
 
18 bab iii
18 bab iii18 bab iii
18 bab iii
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data Sorting
 

File

  • 1. Keudekupi.com Visualisasi Metode Pengurutan Kontribusi: Taufik Abidin Saturday, 09 September 2006 Mata kuliah Struktur Data merupakan salah satu mata kuliah yang ajarkan pada banyak program studi ilmu komputer. Mata kuliah ini mempelajari struktur data dan algoritma diantaranya array, linked list, stack, queue, table hash, heap, metode pengurutan, metode pencarian, binary tree dan banyak lagi. Salah satu cara termudah memahami materi mata kuliah ini adalah dengan cara memvisualisasikan materinya secara langsung, misalnya algoritma pengurutan. Tanpa visualisasi, algoritma pengurutan yang dipelajari harus dibayangkan oleh masing-masing orang. Hal ini tentunya tidaklah mudah, paling tidak didukung oleh beberapa alasan berikut: pertama, seringnya terjadi pertukaran data dari suatu posisi ke posisi lain selama proses pengurutan berlangsung. Kedua, sulitnya membayangkan dan mengingat posisi data yang berpindah dan data yang tidak berpindah. Ketiga, pertukaran dan perpindahan data tergantung kepada metode pengurutuan yang digunakan. Tulisan ini membahas program visualisasi metode pengurutan dasar: bubble sort, selection sort dan insertion sort. Tujuannya adalah memperlihatkan perubahan posisi data dan menghitung secara tepat jumlah perbandingan dan pertukaran data selama proses pengurutan berlangsung. Implementasi program visualisasi ini menggunakan bahasa pemrograman Java. Program ini merupakan aplikasi applet yang terdiri dari 6 class meliputi: SortItem, Control, SortAlgoritm, BubbleSortAlgorithm, SelectionSortAlgorithm dan InsertionSortAlgorithm. Khusus class SortItem dan SortAlgorithm dikembangkan dan dimodifikasi dari program aslinya yang ditulis oleh James Gosling dari Sun Microsystems pada tahun 1997. Metode PengurutanSecara umum, metode pengurutan dapat dikelompokkan dalam 2 kategori yaitu metode pengurutan sederhana (elementary sorting methods) dan metode pengurutan lanjut (advanced sorting methods). Metode pengurutan sederhana meliputi bubble sort, selection sort dan insertion sort. Sedangkan metode pengurutan lanjut diantaranya shell sort, quick sort, merge sort dan radix sort. Metode bubble sort merupakan metode pengurutan yang menggunakan konsep gelembung. Perbandingan data dilakukan dari posisi pertama atau posisi terakhir bergeser satu persatu sampai semua data dibandingkan [3], [4]. Metode selection sort merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah perbandingan [4]. Selection sort merupakan metode pengurutan yang mencari nilai data terbesar atau terkecil dan kemudian menempatkannya pada posisi yang sebenarnya, dimulai dari data diposisi 0 hingga data diposisi N-1. Sedangkan metode insertion sort adalah metode pengurutan yang biasa dipakai oleh pemain kartu dalam mengurutkan kartunya, yaitu menyisipkan kartu dengan nilai yang lebih kecil ke posisi sebelum kartu pembandingnya.Gambar 1. Hirarki class program visualisasi. Class SortItem menurunkan sifat class applet yang memiliki tombol-tombol pengatur visualisasi yang diimplementasi di class Controls. SortItem memiliki algoritma pengurutan (SortAlgorithm) yang merupakan abstract class yang kemudian diturunkan sifatnya oleh class BubbleSortAlgorithm, SelectionSortAlgorithm, dan InsertionSortAlgorithm. Metode Pengacakan (Scramble) Dalam visualisasi ini, data direpresentasikan dalam bentuk diagram batang sebanyak 25 buah. Tinggi dan posisi diagram batang diperoleh secara acak menggunakan metode scramble yang ditulis dalam kelas SortItem sebagai berikut: priv void scramble(){ int item[] = new int[25]; double f = width / (double) item.length; for (int i = item.length; --i > = (int)(i * f) + 10; } int seed = item.length-1; for (int i = item.length; --i >= 0;){ int j = (int)(seed * Math.random() temp = item[i]; item[i] = item[j]; item[j] = temp; } arr = item; } Nilai dari variabel f merupakan lebar dari diagram batang. Perulangan for…loop yang pertama memberikan nilai kepada array item, tetapi belum teracak. Sedangkan pada perulangan for…loop yang kedua, nilai j diacak dan kemudian data diposisi i ditukar dengan data diposisi j. Gambar 2. berikut memperlihatkan tampilan data setelah diacak dan setelah terurut yang dijalankan menggunakan appletviewer command, dan gambar 3 bila program dijalankan melalui browser. Gambar 2. Tampilan setelah diacak dan setelah terurut. Gambar 3. Program dijalankan melalui browser. Teknik Penggambaran Teknik penggambaran merupakan kunci utama dalam program visualisasi ini. Teknik penggambaran yang tidak benar mengakibatkan visualisasi menjadi tidak halus. Sebagai contoh, bila terdapat 3 buah data yang digambarkan dalam bentuk diagram batang masing-masing bernilai 10, 15, dan 5, yang kemudian selama proses pengurutan mengalami pertukaran menjadi 10, 5, dan 15, maka cara penggambaran perubahan tersebut dapat diilustrasikan sebagai berikut: Gambar 3. Teknik penggambaran perubahan data dalam program visualisasi. Dari ilustrasi di atas dapat dilihat bahwa penggambaran dilakukan dalam 2 tahap. Tahap pertama adalah menggambar diagram batang dengan lebar wbar setinggi height – nilai data. Sebagai contoh, bila nilai data = 5, maka 20 http://www.keudekupi.com Dirancang Menggunakan Joomla! Generated: 21 November, 2009, 04:00
  • 2. Keudekupi.com – 5 = 15. Warna dari diagram batang ini adalah sama dengan warna latar belakang. Penggambaran dimulai dari koordinat y = 0 dengan dx merupakan koordinat x dari diagram batang yang berubah sesuai urutan dari diagram batang. Sintaksnya dalam Java adalah:g.fillRect(dx, 0, wbar, height-arr[i]); Tahap kedua adalah menggambar diagram batang warna hitam dengan lebar wbar setinggi nilai data dengan koordinat y = height – nilai data. Sebagai contoh, bila nilai data = 5, maka y = 15. Sintaknya dalam Java adalah: g.fillRect(dx, height-arr[i], wbar, arr[i]); Berikut kode lengkap dari metode paint untuk menggambarkan perubahan data. public void paint(Graphics g){ int item[] = arr; int nbar = 25; int wbar = (int)(width / nbar); int dx = width - wbar; g.setColor(getBackgroun = item.length; --i >= 0; dx -= wbar){ g.fillRect(dx, 0, wbar, height-arr[i]); } dx = width - wbar; g.setColor(Color.darkGray); for (int i = item.length; --i >= 0; dx -= wbar){ g.fillRect(dx, height-arr[i], wbar, arr[i]); if (h1 >= 0){ g.setColor(Color.red); dx = h1 * wbar; g.drawLine(dx, 0, dx, height-1); } g.setColor(Color.blue); dx = h2 * wbar; g.drawLine(dx, 0, dx, height-1); } } Hasil Pengamatan Metode Bubble Sort Perhatikan bahwa jumlah pertukaran dan perbandingan data tidaklah tetap, perbedaan tergantung pada keadaan awal data setelah diacak. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode bubble sort. Pengacakan Jumlah Total Pertukaran Data Perbandingan Data 1 155279 2 127 272 3 137 245 4 142 297 5 151 294 6 138 285 7 178 300 8 165 272 9 156 285 10 175 300 Rata-rata 152 Jumlah rata-rata pertukaran untuk 10 kali pengacakan adalah 152 kali, sedangkan rata-rata jumlah perbandingan adalah sebanyak 283 kali. Tetapi bila data pada awalnya terurut, maka untuk 25 jumlah data, jumlah pertukaran data sebanyak 0 kali dengan jumlah perbandingan sebanyak 24 kali. Metode Selection Sort Jumlah pertukaran data dengan metode ini tidak selalu tetap namun tergantung pada keadaan awal data. Sedangkan jumlah perbandingan data selalu tetap. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode selection sort. Pengacakan Jumlah Total Pertukaran Data Perbandingan Data 1 23325 2 24325 3 21325 4 22325 5 23325 622 325 7 21325 8 20325 9 23325 10 22325 Rata-rata 22325 Terlihat bahwa jumlah pertukaran data turun drastis dibandingkan pengurutan menggunakan metode bubble sort, karena memang metode selection sort diciptakan untuk memperbaiki metode bubble sort mengurangi jumlah perbandingan [4]. Jumlah perbandingan data selalu tetap dan tidak tergantung pada keadaan awal data. Bila data awal dalam keadaan sudah terurut, maka untuk jumlah data yang sama, total pertukaran data sebanyak 0 kali dengan jumlah perbandingan tetap 325 kali. Metode Insertion Sort Hasil pengamatan menunjukkan bahwa dengan jumlah data dan jumlah pengacakan yang sama, metode insertion sort bekerja lebih cepat dibandingkan dengan metode bubble sort dan selection sort (untuk mencatat waktu secara lebih tepat, mungkin program perlu dimodifikasi sehingga waktu proses pengurutan dapat dihitung secara tepat). Jumlah pertukaran data dengan metode ini juga tergantung pada keadaan awal data yaitu rata-rata sebanyak 136 kali (dari 10 kali pengamatan), dan jumlah perbandingan data selalu 300 kali. Berikut tabulasi hasil visualisasi menggunakan metode insertion sort. Pengacakan Jumlah Total http://www.keudekupi.com Dirancang Menggunakan Joomla! Generated: 21 November, 2009, 04:00
  • 3. Keudekupi.com Pertukaran Data Perbandingan Data 1149300 2138300 3168300 4157300 5102300 6106 300 7122 300 8123 300 9145 300 10148 300 Rata-rata136 300 Penutup Hasil pengamatan menunjukkan bahwa dengan program visualisasi, proses pengurutan dapat diilustrasikan secara cepat, mudah dan berulang-ulang. Program visualisasi juga memperlihatkan secara jelas bagaimana proses pertukaran data terjadi, total perbandingan dan jumlah pertukaran data yang diperlukan. Selamat mencoba dan jangan lupa, kembangkan untuk hal-hal lain yang menarik. Referensi 1. Flanigan, David, Java in a Nutshell: A Desktop Quick Reference, 2nd edition, O’Reilly & Associates Inc. California, 1997. 2. Savitch, Walter, Java: An Introduction to Computer Science & Programming, Prentice Hall Inc, New Jersey, 1999. 3. Sedgewich, Robert, Algorithms in C, 3rd edition, Addison-Wesley Publishing, 1998. 4. Waite, Mitchell, Data Structures and Algorithms in Java, Waite Group Press, California, 1998. http://www.keudekupi.com Dirancang Menggunakan Joomla! Generated: 21 November, 2009, 04:00