Deskripsi Singkat MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT Pada praktikum ke-1, kita telah mempelajari cara untuk menghitung interval waktu untuk 2 metode searching (sekuensial dan binary). Pada praktikum ini kita akan membuat proses sorting (pengurutan) dengan menggunakan 3 algoritma sorting sederhana yaitu bubble sort, selection sort, dan insertion sort. Sorting adalah sebuah teknik pemrograman untuk mengurutkan suatu data. Teknik ini bisa menjadi langkah awal untuk melakukan pencarian karena sebuah pencarian dari data yang telah diurutkan jauh lebih cepat (seperti yang telah anda buktikan pada praktikum ke-1). Tujuan 1. Membuat method bubblesort, selectionsort dan insertionsort 2. Menghitung interval waktu untuk bubble sort, selection sort dan insertion sort Materi 1 : Algoritma Bubble Sort Bubble sort merupakan algoritma sorting yang paling sederhana namun paling lambat. Namun algoritma ini merupakan awal yang baik untuk memahami proses sorting data. Algoritma bubble sort bekerja mengurutkan data dengan membandingkan elemen yang bersebelahan secara berulang dan menukar posisinya jika perlu. Kita akan menggunakan class ArrayTakTerurut pada praktikum 1 dan menambahkan method bubblesort(). Berikut kode yang perlu ditambahkan. public void bubblesort() int out, in; for(out=nelems-1; out>1; out--) // outer loop (backward) for(in=0; in<out; in++) // inner loop (forward) if( a[in] > a[in+1] ) // out of order? swap(in, in+1); // swap them // end bubblesort() private void swap(int one, int two) double temp = a[one]; a[one] = a[two]; a[two] = temp;
Kemudian buat class baru untuk menguji method bubblesort() seperti kode program di bawah. public class BubbleSortApp arrt.bubblesort(); Materi 2 : Algoritma Selection Sort Algoritma selection sort bekerja mengurutkan data dengan meletakkan nilai tertentu pada posisi terakhir secara berulang. Algoritma ini merupakan kombinasi proses sorting dan searching. Berikut kode method selectionsort() yang perlu anda tambahkan ke dalam class ArrayTakTerurut. public void selectionsort() int out, in, min; for(out=0; out<nelems-1; out++) // outer loop min = out; // minimum for(in=out+1; in<nelems; in++) // inner loop if(a[in] < a[min] ) // if min greater, min = in; // we have a new min swap(out, min); // swap them // end for(outer)
// end selectionsort() Kemudian buat class baru untuk menguji method selectionsort() seperti kode program di bawah. public class SelectSortApp arrt.selectionsort(); Materi 3 : Algoritma Insertion Sort Algoritma insertion sort bekerja mengurutkan data dengan menyisipkan nilai tertentu kepada subset list yang terurut secara berulang. Proses kerjanya mirip seperti cara orang menyusun kartu dalam permainan kartu. Berikut kode method insertionsort() yang perlu anda tambahkan ke dalam class ArrayTakTerurut. public void insertionsort() int in, out; for(out=1; out<nelems; out++) // out is dividing line double temp = a[out]; // remove marked item in = out; // start shifts at out while(in>0 && a[in-1] >= temp) // until one is smaller, a[in] = a[in-1]; // shift item right,
--in; // go left one position a[in] = temp; // insert marked item // end for // end insertionsort() Kemudian buat class baru untuk menguji method insertionsort() seperti kode program di bawah. public class InsertSortApp arrt.insertionsort(); LATIHAN 1 Latihan berikut ini digunakan untuk mencari interval waktu perbedaan antara bubble sort, selection sort dan insertion sort. Gunakan class TimeInterval yang telah dibuat pada praktikum 1. Untuk mencari interval waktu ini, kita akan memulai dari array dengan maxsize=100, cek hasilnya untuk masing-masing algoritma sorting (bubble sort, selection sort dan insertion sort). Jika tidak ada perbedaan waktu, naikkan menjadi 1000, cek kembali. Naikkan kembali menjadi 10000, 100000, dan seterusnya hingga tampak perbedaan interval waktu antara ketiga algoritma tersebut. Silakan gunakan tabel di bawah untuk pedoman pencatatan waktunya.
Ukuran array (maxsize) Waktu bubblesort() Waktu selectionsort() Waktu insertionsort() 100 1000 10000 100000 1000000 10000000 Apakah yang dapat anda simpulkan? SOAL-SOAL 1.