Algoritma Bubble Sort: Konsep, Cara Kerja, dan Contoh Kode

Bubble sort atau metode gelembung adalah salah satu algoritma pengurutan sederhana yang sering diajarkan dalam ilmu komputer. Walaupun algoritma ini sederhana dan lambat dibandingkan dengan algoritma pengurutan lainnya, namun bubble sort tetap menjadi topik yang menarik untuk dipelajari karena memperlihatkan bagaimana sebuah algoritma sederhana dapat bekerja dengan cara yang efektif dalam mengurutkan data.

Algoritma bubble sort bekerja dengan cara membandingkan dua elemen sekaligus dalam array, kemudian menukar posisi elemen jika urutan elemen tersebut tidak sesuai. Algoritma ini memperlihatkan bagaimana sebuah data besar dapat diurutkan dengan cara membandingkan dan menukar elemen-elemen kecilnya.

Meskipun algoritma bubble sort seringkali dianggap lambat dan kurang efisien, namun algoritma ini sangat penting dalam memahami dasar-dasar algoritma pengurutan. Selain itu, bubble sort juga dapat menjadi pilihan algoritma pengurutan yang cocok untuk digunakan dalam data yang tidak terlalu besar atau data yang sudah hampir terurut secara alami.

Berikut adalah langkah-langkah dari Bubble Sort:

  1. Membandingkan pasangan pertama elemen dalam array.
  2. Jika urutan pasangan tersebut salah, maka menukar posisi elemen.
  3. Membandingkan pasangan elemen selanjutnya hingga sampai ke elemen terakhir dalam array.
  4. Ketika sudah mencapai elemen terakhir, algoritma akan kembali ke awal array dan melakukan langkah 1 hingga 3 untuk setiap elemen dalam array.
  5. Algoritma berhenti ketika tidak ada lagi pasangan elemen yang dapat ditukar posisinya

Bubble Sort termasuk dalam kategori algoritma sorting dengan waktu eksekusi yang lebih lama daripada algoritma sorting lainnya seperti Quick Sort atau Merge Sort. Namun, Bubble Sort dapat menjadi pilihan yang baik untuk digunakan dalam kasus di mana data yang diurutkan hanya sedikit atau data sudah dalam keadaan hampir terurut.

Misalkan kita memiliki array berikut:

[5, 1, 4, 2, 8]

Maka langkah-langkah dari Bubble Sort pada array tersebut adalah sebagai berikut:

  1. Membandingkan pasangan pertama elemen, yaitu 5 dan 1. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 5, 4, 2, 8].
  2. Membandingkan pasangan elemen selanjutnya, yaitu 5 dan 4. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 4, 5, 2, 8].
  3. Membandingkan pasangan elemen selanjutnya, yaitu 5 dan 2. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 4, 2, 5, 8].
  4. Membandingkan pasangan elemen selanjutnya, yaitu 5 dan 8. Karena urutannya benar, maka tidak ada tindakan yang perlu dilakukan. Array tetap sama, [1, 4, 2, 5, 8].
  5. Algoritma kembali ke awal array dan memulai langkah 1 hingga 4 untuk setiap elemen dalam array.
  6. Membandingkan pasangan elemen pertama, yaitu 1 dan 4. Karena urutannya benar, maka tidak ada tindakan yang perlu dilakukan. Array tetap sama, [1, 4, 2, 5, 8].
  7. Membandingkan pasangan elemen selanjutnya, yaitu 4 dan 2. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 2, 4, 5, 8].
  8. Membandingkan pasangan elemen selanjutnya, yaitu 4 dan 5. Karena urutannya benar, maka tidak ada tindakan yang perlu dilakukan. Array tetap sama, [1, 2, 4, 5, 8].
  9. Membandingkan pasangan elemen terakhir, yaitu 5 dan 8. Karena urutannya benar, maka tidak ada tindakan yang perlu dilakukan. Array tetap sama, [1, 2, 4, 5, 8].
  10. Algoritma kembali ke awal array dan memulai langkah 1 hingga 4 untuk setiap elemen dalam array.
  11. Karena sudah tidak ada lagi pasangan elemen yang dapat ditukar posisinya, maka algoritma berhenti.
  12. Setelah langkah-langkah di atas selesai, array akan menjadi [1, 2, 4, 5, 8], yang merupakan hasil dari pengurutan dengan menggunakan Bubble Sort.
Berikut contoh Bubble Sort dalam Java dan C#:

1. Java
public class BubbleSort {

    public static void main(String[] args) {
        int[] arr = {5, 1, 4, 2, 8};

        System.out.println("Array sebelum diurutkan:");
        printArray(arr);

        bubbleSort(arr);

        System.out.println("\nArray setelah diurutkan:");
        printArray(arr);
    }

    public static void bubbleSort(int[] arr) {
        int n = arr.length;

        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

2. C#
using System;

public class BubbleSort {
    public static void Main(string[] args) {
        int[] arr = {5, 1, 4, 2, 8};

        Console.WriteLine("Array sebelum diurutkan:");
        PrintArray(arr);

        BubbleSortMethod(arr);

        Console.WriteLine("\nArray setelah diurutkan:");
        PrintArray(arr);
    }

    public static void BubbleSortMethod(int[] arr) {
        int n = arr.Length;

        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    public static void PrintArray(int[] arr) {
        for (int i = 0; i < arr.Length; i++) {
            Console.Write(arr[i] + " ");
        }
    }
}