MATERI BUBBLE SORT – ALGORITMA PENGURUTAN

kuliah di cileungsi

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:

  1. Tampilkan data sebelum diurutkan.
  2. Urutkan dari nilai terkecil.
  3. Tampilkan data setelah diurutkan.
  4. Urutkan dari nilai terbesar.
  5. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *