/** Praktikum Bubble Sort Kuliah Struktur Data dan Algoritma Program Studi Teknik Informatika Fakultas Teknologi Informasi, Universitas YARSI @author ? @version 1.00 */ import java.util.Arrays; public class BubbleSort{ /** Method pertama yang akan dipanggil ketika menjalankan kelas ini. */ public static void main(String[] args){ int[] data = new int[]{5, 3, 7, 2, 6, 4, 8, 1, 9}; BubbleSortSolution.bubbleSort(data, true); data = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9}; BubbleSortSolution.bubbleSort(data, true); data = new int[]{9, 8, 7, 6, 5, 4, 3, 2, 1}; BubbleSortSolution.bubbleSort(data, true); data = new int[]{5, 6, 7, 8, 1, 2, 3, 4, 9, 75, 26, 47, 38, 11, 22, 23, 14, 19, 65, 86, 57, 98, 41, 12, 53, 94, 39}; BubbleSortSolution.bubbleSort(data, true); } /** Ini adalah method yang perlu Anda ubah selama praktikum. */ public static void enhancedBubbleSort(int[] data, boolean ascending){ // pencacah untuk menghitung jumlah loop - JANGAN DIHAPUS int totalLoop = 0; // jumlah total pengulangan - JANGAN DIHAPUS // pengulangan pertama, untuk memunculkan bubble for(int i = 0; i < data.length - 1; i++){ // pengulangan kedua, untuk menaikkan bubble for(int j = 0; j < data.length - 1; j++){ // periksa jika data dalam bubble perlu di-swap if(data[j] > data[j + 1]){ int temp = data[j + 1]; data[j + 1] = data[j]; data[j] = temp; } totalLoop++; // tambahkan loop counter - JANGAN DIHAPUS } } // tampilkan data statistik - JANGAN DIHAPUS System.out.println((ascending ? "Ascending " : "Descending ") + " Enhanced Bubble Sort:\n " + Arrays.toString(data)); System.out.println(" Jumlah loop: " + totalLoop); } /** Implementasi algoritma Bubble Sort paling sederhana dengan menggunakan satu pointer dan mengeksekusi seluruh perbandingan yang ada. Anda tidak perlu mengubah method ini. */ public static void bubbleSort(int[] data, boolean ascending){ // copy data untuk pemanggilan enhancedBubbleSort int[] dataCopy = Arrays.copyOf(data, data.length); // pencacah untuk menghitung jumlah loop int totalLoop = 0; // jumlah total pengulangan // pengulangan pertama, untuk memunculkan bubble for(int i = 0; i < data.length - 1; i++){ // pengulangan kedua, untuk menaikkan bubble for(int j = 0; j < data.length - 1; j++){ // periksa jika data dalam bubble perlu di-swap if(data[j] > data[j + 1]){ int temp = data[j + 1]; data[j + 1] = data[j]; data[j] = temp; } totalLoop++; // tambahkan loop counter } } // tampilkan data statistik System.out.println("\n-----------------"); System.out.println("Original:\n " + Arrays.toString(dataCopy)); System.out.println((ascending ? "Ascending " : "Descending ") + " Bubble Sort:\n " + Arrays.toString(data)); System.out.println(" Jumlah loop: " + totalLoop); // uji dengan enhancedBubbleSortSolution BubbleSortSolution.enhancedBubbleSort(dataCopy, ascending); } }