1. Pengertian Bubble Sort
Bubble Sort adalah algoritma sorting atau pengurutan data dengan cara membandingkan dua data yang bersebelahan.
Jika posisi kedua data tersebut salah, maka datanya akan ditukar.
Proses ini dilakukan berulang-ulang sampai seluruh data menjadi terurut.
Disebut “Bubble Sort” karena data yang lebih besar secara bertahap akan “naik” ke posisi paling kanan seperti gelembung (bubble) yang naik ke permukaan.
2. Contoh Case
Misalnya kita mempunyai nilai mahasiswa:
70, 50, 90, 30, 60
Kita ingin mengurutkan dari kecil ke besar:
30, 50, 60, 70, 90
Kita gunakan Bubble Sort.
3. Konsep Dasar Bubble Sort
Kita membandingkan data yang bersebelahan.
Data awal:
70, 50, 90, 30, 60
Perbandingan 1
Bandingkan:
70 dan 50
Karena:
70 > 50
maka ditukar:
50, 70, 90, 30, 60
Kemudian:
70 dan 90
Karena:
70 < 90
tidak ditukar.
Hasil:
50, 70, 90, 30, 60
Kemudian:
90 dan 30
Karena:
90 > 30
ditukar:
50, 70, 30, 90, 60
Kemudian:
90 dan 60
Karena:
90 > 60
ditukar:
50, 70, 30, 60, 90
Pada akhir putaran pertama, angka terbesar yaitu 90 sudah berada di posisi paling kanan.
4. Putaran Kedua
Data:
50, 70, 30, 60, 90
Bandingkan:
50 dan 70
Tidak ditukar.
50, 70, 30, 60, 90
Bandingkan:
70 dan 30
Ditukar:
50, 30, 70, 60, 90
Bandingkan:
70 dan 60
Ditukar:
50, 30, 60, 70, 90
90 tidak perlu dibandingkan lagi karena sudah berada di posisi yang benar.
5. Putaran Ketiga
50, 30, 60, 70, 90
Bandingkan:
50 dan 30
Ditukar:
30, 50, 60, 70, 90
Kemudian:
50 dan 60
Tidak ditukar.
Kemudian:
60 dan 70
Tidak ditukar.
Hasil:
30, 50, 60, 70, 90
Data sudah terurut.
6. Algoritma Bubble Sort
Secara sederhana algoritmanya:
1. Mulai
2. Masukkan data
3. Tentukan jumlah data
4. Bandingkan data pertama dengan data berikutnya
5. Jika data pertama lebih besar, tukarkan
6. Lanjutkan ke pasangan data berikutnya
7. Ulangi proses sampai satu putaran selesai
8. Ulangi putaran sampai seluruh data terurut
9. Tampilkan data yang sudah terurut
10. Selesai
7. Pseudocode Bubble Sort
Untuk pengurutan dari kecil ke besar:
ALGORITMA BubbleSort
INPUT data
n ← jumlah data
FOR i ← 0 TO n - 2
FOR j ← 0 TO n - i - 2
IF data[j] > data[j + 1] THEN
tukar data[j] dengan data[j + 1]
END IF
END FOR
END FOR
OUTPUT data
Perhatikan bagian penting:
IF data[j] > data[j + 1]
Artinya:
Jika data sebelah kiri lebih besar daripada data sebelah kanan, maka tukarkan.
8. Program Bubble Sort Python
Versi sederhana:
data = [70, 50, 90, 30, 60]
n = len(data)
for i in range(n - 1):
for j in range(n - i - 1):
if data[j] > data[j + 1]:
# Tukar data
data[j], data[j + 1] = data[j + 1], data[j]
print("Data setelah diurutkan:")
print(data)
Output:
Data setelah diurutkan:
[30, 50, 60, 70, 90]
9. Penjelasan Program
Bagian ini:
data = [70, 50, 90, 30, 60]
adalah data yang akan kita urutkan.
Kemudian:
n = len(data)
len() digunakan untuk menghitung jumlah data.
Hasilnya:
n = 5
Kemudian:
for i in range(n - 1):
Digunakan untuk mengatur jumlah putaran.
Karena ada 5 data, maksimal diperlukan:
5 - 1 = 4 putaran
Kemudian:
for j in range(n - i - 1):
Digunakan untuk membandingkan data yang bersebelahan.
Sedangkan:
if data[j] > data[j + 1]:
berarti:
Jika data kiri > data kanan
maka:
data[j], data[j + 1] = data[j + 1], data[j]
melakukan pertukaran.
10. Versi Program dengan Komentar
Ini versi yang lebih cocok untuk diberikan kepada peserta kursus:
# Data yang akan diurutkan
data = [70, 50, 90, 30, 60]
# Menghitung jumlah data
n = len(data)
# Perulangan untuk menentukan jumlah putaran
for i in range(n - 1):
# Perulangan untuk membandingkan data
for j in range(n - i - 1):
# Membandingkan dua data yang bersebelahan
if data[j] > data[j + 1]:
# Menukar posisi data
data[j], data[j + 1] = data[j + 1], data[j]
# Menampilkan hasil
print("Data setelah diurutkan:")
print(data)
Output:
Data setelah diurutkan:
[30, 50, 60, 70, 90]
11. Bubble Sort dengan Input User
Supaya lebih menarik untuk latihan, data bisa dimasukkan oleh user:
data = []
jumlah = int(input("Masukkan jumlah data: "))
for i in range(jumlah):
nilai = int(input(f"Data ke-{i + 1}: "))
data.append(nilai)
print("\nData sebelum diurutkan:")
print(data)
n = len(data)
# Bubble Sort
for i in range(n - 1):
for j in range(n - i - 1):
if data[j] > data[j + 1]:
data[j], data[j + 1] = data[j + 1], data[j]
print("\nData setelah diurutkan:")
print(data)
Contoh:
Masukkan jumlah data: 5
Data ke-1: 70
Data ke-2: 20
Data ke-3: 90
Data ke-4: 40
Data ke-5: 10
Output:
Data sebelum diurutkan:
[70, 20, 90, 40, 10]
Data setelah diurutkan:
[10, 20, 40, 70, 90]
12. Bubble Sort dari Besar ke Kecil
Kalau ingin:
90, 70, 60, 50, 30
ubah operator:
if data[j] < data[j + 1]:
Program:
data = [70, 50, 90, 30, 60]
n = len(data)
for i in range(n - 1):
for j in range(n - i - 1):
if data[j] < data[j + 1]:
data[j], data[j + 1] = data[j + 1], data[j]
print(data)
Output:
[90, 70, 60, 50, 30]
Jadi mudah diingat:
Kecil → Besar
data[j] > data[j + 1]
Besar → Kecil
data[j] < data[j + 1]
13. Optimasi Bubble Sort
Ada kondisi ketika data sebenarnya sudah terurut:
10, 20, 30, 40, 50
Kita sebenarnya tidak perlu melakukan semua putaran.
Kita bisa menggunakan variabel tukar:
data = [10, 20, 30, 40, 50]
n = len(data)
for i in range(n - 1):
tukar = False
for j in range(n - i - 1):
if data[j] > data[j + 1]:
data[j], data[j + 1] = data[j + 1], data[j]
tukar = True
# Jika tidak ada pertukaran,
# berarti data sudah terurut
if tukar == False:
break
print(data)
Konsepnya:
Apakah ada pertukaran?
YA → lanjutkan
TIDAK → berhenti
14. Kompleksitas Bubble Sort
Bubble Sort mempunyai kompleksitas waktu:
Worst Case : O(n²)
Average Case: O(n²)
Best Case : O(n)
Khusus versi yang menggunakan pengecekan tukar.
Contohnya kalau jumlah data:
5 data
maka perbandingannya relatif sedikit.
Tetapi kalau:
1.000 data
10.000 data
100.000 data
Bubble Sort menjadi kurang efisien karena jumlah perbandingannya dapat meningkat sangat cepat.
15. Case Latihan
Case 1 — Nilai Mahasiswa
Data nilai:
nilai = [75, 60, 90, 55, 80, 70]
Tugas:
- Tampilkan data sebelum diurutkan.
- Urutkan dari nilai terkecil.
- Tampilkan data setelah diurutkan.
- Urutkan dari nilai terbesar.
- Tampilkan hasilnya.
Target:
Data awal:
[75, 60, 90, 55, 80, 70]
Ascending:
[55, 60, 70, 75, 80, 90]
Descending:
[90, 80, 75, 70, 60, 55]
16. Case 2 — Harga Barang
Misalnya toko mempunyai harga:
harga = [15000, 5000, 25000, 10000, 30000, 20000]
Tugas:
1. Urutkan harga dari termurah ke termahal.
2. Urutkan harga dari termahal ke termurah.
Hasil:
Termurah:
[5000, 10000, 15000, 20000, 25000, 30000]
Termahal:
[30000, 25000, 20000, 15000, 10000, 5000]
17. Gambaran Sederhana Bubble Sort
Cara paling mudah mengingat Bubble Sort:
[70] [50] [90] [30] [60]
↓ ↓
Bandingkan
↓
70 > 50
↓
Tukar
↓
[50] [70] [90] [30] [60]
Kemudian bergerak ke kanan:
[50] [70] [90] [30] [60]
↓ ↓
70 90
Kemudian:
[50] [70] [30] [90] [60]
↓ ↓
90 60
Hasil satu putaran:
[50] [70] [30] [60] [90]
Terlihat bahwa:
90
“menggelembung” ke posisi paling kanan.
Itulah inti dari Bubble Sort.