Skip to main content

Bubble Sort

Bubble

Dinamakan Bubble Sort dikarenakan cara pengurutannya yang seperti gelembung yang berada di suatu kolam. Gelembung yang ringan akan mengambang naik ke posisi teratas dan gelembung yang lebih berat akan berada di posisi lebih bawah.

Sebelum mempelajarinya, cobalah menonton video YouTube berikut ini, Bubble sort in 2 minutes.

Complexity

CaseTime ComplexitySpace Complexity
BestO(n)O(n)O(1)O(1)
AverageO(n2)O(n^2)O(1)O(1)
WorstO(n2)O(n^2)O(1)O(1)

Penjelasan

Diberikan sebuah array yang berisikan sebuah angka seperti berikut,

Input

Unsorted array

Output

Sorted array

Kunci dari bubble sort adalah membandingkan nilai mula yang satu dengan nilai yang bersebelahan. Jika nilai mula lebih kecil dari nilai sebelahnya, maka tidak terjadi proses pertukaran/swapping. Jika nilai mula lebih lebih besar dari nilai sebelahnya, maka proses pertukaran/swapping terjadi. Ulangi proses tersebut sampai seluruh elemen di dalam array terurut.

Jika dibuat menjadi sebuah narasi, maka kurang lebih seperti berikut ini:

  1. Mulai dari awal array.
  2. Bandingkan setiap pasangan elemen sebelahnya (elemen i dengan elemen i+1).
  3. Jika elemen i lebih besar dari elemen sebelahnya (i+1), tukar posisi kedua elemen tersebut.
  4. Ulangi proses dari langkah 2 sampai elemen terakhir.
  5. Setelah satu iterasi, elemen terbesar akan berada di posisi terakhir. Ulangi proses dari langkah 2 untuk array yang lebih kecil, tanpa mengikutsertakan elemen terakhir.
  6. Ulangi proses dari langkah 5 sampai array sudah terurut.

Contoh

arr[] = {10, 80, 40, 30}
Indexes: 0 1 2 3

1. Index = 0, Number = 10
2. 10 < 80, jangan lakukan apapun dan teruskan

3. Index = 1, Number = 80
4. 80 > 40, swap 80 dan 40
5. Sekarang array-nya menjadi {10, 40, 80, 30}

6. Index = 2, Number = 80
7. 80 > 30, swap 80 dan 30
8. Sekarang array-nya menjadi {10, 40, 30, 80}

Ulangi langkah diatas kembali

arr[] = {10, 40, 30, 80}
Indexes: 0 1 2 3

1. Index = 0, Number = 10
2. 10 < 40, jangan lakukan apapun dan teruskan

3. Index = 1, Number = 40
4. 40 > 30, swap 40 dan 30
5. Sekarang array-nya menjadi {10, 30, 40, 80}

6. Index = 2, Number = 40
7. 40 < 80, do nothing
8. Sekarang array-nya menjadi {10, 30, 40, 80}

Ulangi langkah diatas kembali

arr[] = {10, 30, 40, 80}
Indexes: 0 1 2 3

1. Index = 0, Number = 10
2. 10 < 30, jangan lakukan apapun dan teruskan

3. Index = 1, Number = 30
4. 30 < 40, jangan lakukan apapun dan teruskan

5. Index = 2, Number = 40
6. 40 < 80, jangan lakukan apapun

Semenjak tidak ada lagi elemen yang dapat di swap, maka dari itu proses sorting dapat dihentikan.

Source Code

#include <iostream>
using namespace std;

void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// Tukar array-nya
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}

int main() {
int arr[] = {2, 8, 5, 3, 9, 4, 1};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
cout << "Array setelah diurutkan: \n";
for (int i=0; i < n; i++)
cout << arr[i] << " ";
return 0;
}

Sumber lain

Kalian bisa melihat sumber lainnya berikut ini,

  1. Animation Explanation