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:
- Membandingkan pasangan pertama elemen dalam array.
- Jika urutan pasangan tersebut salah, maka menukar posisi elemen.
- Membandingkan pasangan elemen selanjutnya hingga sampai ke elemen terakhir dalam array.
- Ketika sudah mencapai elemen terakhir, algoritma akan kembali ke awal array dan melakukan langkah 1 hingga 3 untuk setiap elemen dalam array.
- 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:
- Membandingkan pasangan pertama elemen, yaitu 5 dan 1. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 5, 4, 2, 8].
- Membandingkan pasangan elemen selanjutnya, yaitu 5 dan 4. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 4, 5, 2, 8].
- Membandingkan pasangan elemen selanjutnya, yaitu 5 dan 2. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 4, 2, 5, 8].
- 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].
- Algoritma kembali ke awal array dan memulai langkah 1 hingga 4 untuk setiap elemen dalam array.
- 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].
- Membandingkan pasangan elemen selanjutnya, yaitu 4 dan 2. Karena urutannya salah, maka kedua elemen tersebut ditukar posisinya. Array menjadi [1, 2, 4, 5, 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].
- 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].
- Algoritma kembali ke awal array dan memulai langkah 1 hingga 4 untuk setiap elemen dalam array.
- Karena sudah tidak ada lagi pasangan elemen yang dapat ditukar posisinya, maka algoritma berhenti.
- Setelah langkah-langkah di atas selesai, array akan menjadi [1, 2, 4, 5, 8], yang merupakan hasil dari pengurutan dengan menggunakan Bubble Sort.
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] + " ");}}}
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] + " ");}}}