← Kembali ke DSA
🫧

Sorting (Pengurutan)

Bubble Sort

Berulang kali menukar elemen bersebelahan yang urutannya salah, sehingga elemen terbesar yang belum terurut "menggelembung" ke posisinya di setiap putaran.

Kompleksitas

Waktu (Terbaik)

O(n)

Waktu (Rata-rata)

O(n²)

Waktu (Terburuk)

O(n²)

Memori

O(1)

Poin Penting

  • ›Mudah diimplementasikan, tetapi tidak efisien untuk data besar
  • ›Setiap satu putaran penuh menempatkan satu elemen lagi di posisi akhirnya
  • ›Bisa dioptimalkan: jika tidak ada pertukaran dalam satu putaran, array sudah terurut dan proses bisa berhenti
  • ›Stable sort: urutan relatif elemen yang nilainya sama tetap terjaga
  • ›In-place: hanya butuh ruang tambahan O(1)

Visualizer Interaktif

Langkah 0 / 0✓ Selesai diurutkan!
LambatCepat
NormalDibandingkanDitukarTerurut

Contoh Kode

Swift
func bubbleSort(_ arr: inout [Int]) {
    let n = arr.count
    for i in 0..<n - 1 {
        var swapped = false
        for j in 0..<n - i - 1 {
            if arr[j] > arr[j + 1] {
                arr.swapAt(j, j + 1)
                swapped = true
            }
        }
        if !swapped { break }  // early exit optimisation
    }
}

var nums = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(&nums)
print(nums)  // [11, 12, 22, 25, 34, 64, 90]

Latihan Soal

Sort Colors
Sort an Array