Menu
CoddyTech

Bubble Sort

Terakhir diperbarui

Bubble sort adalah algoritma pengurutan yang berulang kali menyusuri list, membandingkan setiap pasangan elemen yang bersebelahan, lalu menukarnya jika urutannya salah. Setelah setiap putaran penuh, nilai terbesar yang tersisa sudah "menggelembung" ke posisi yang benar di ujung, sehingga setiap putaran memeriksa satu elemen lebih sedikit. Tekan Putar di atas untuk melihat perbandingan dan penukarannya, atau jalankan satu per satu.

Bubble sort adalah salah satu algoritma pengurutan yang paling mudah dipahami, sehingga sangat cocok sebagai algoritma pertama. Namun, waktu berjalannya yang O(n²) membuatnya tidak praktis untuk input yang besar.

Kompleksitas waktu dan ruang

KasusKompleksitasCatatan
Kasus terbaikO(n)Sudah terurut, dengan pengecekan keluar lebih awal
Kasus rata-rataO(n²)Urutan acak
Kasus terburukO(n²)Terurut terbalik
RuangO(1)In-place, hanya satu variabel sementara
StabilYaElemen yang sama mempertahankan urutan relatifnya

Langkah demi langkah

LangkahApa yang terjadi
1Mulai dari awal array.
2Bandingkan elemen saat ini dengan elemen berikutnya.
3Jika urutannya salah, tukar keduanya.
4Geser satu posisi ke kanan dan ulangi sampai ujung (satu putaran).
5Ulangi putaran; setiap putaran menempatkan satu elemen lagi di ujung.
6Berhenti saat satu putaran penuh tidak melakukan penukaran.

Contoh penerapan

Mengurutkan [5, 2, 4, 1]:

PutaranArrayAksi
1[2, 4, 1, 5]Tukar 5,2, lalu 5,4, lalu 5,1; 5 menggelembung ke ujung.
2[2, 1, 4, 5]2,4 sudah urut; tukar 4,1; 4,5 sudah urut; 4 kini sudah di tempatnya.
3[1, 2, 4, 5]Tukar 2,1; sisanya sudah urut; 2 sudah di tempatnya.
4[1, 2, 4, 5]Satu putaran penuh tanpa penukaran, jadi array sudah terurut dan algoritma berhenti.

Kapan memakai bubble sort

Pakai saatHindari saat
Mengajar atau mempelajari cara kerja pengurutan berbasis perbandinganMengurutkan input besar, di mana O(n²) terlalu lambat
Inputnya sangat kecil atau hampir terurut (dengan keluar lebih awal, mendekati O(n))Kamu butuh algoritma pengurutan umum tercepat: pakai quicksort atau merge sort
Kamu butuh pengurutan stabil dan in-place dengan kode yang sangat sedikitDatanya berurutan acak dan performa penting
Mendeteksi apakah list pendek sudah terurut dalam satu putaranBanyak penulisan itu mahal (misalnya flash memory); selection sort melakukan lebih sedikit penukaran

Kode Bubble Sort

Implementasi Bubble Sort yang rapi dan siap dijalankan dalam Python, JavaScript, Java, C++, C, Pseudocode. Pilih bahasa, salin kodenya, atau buka langsung di Coddy Playground.

Kode Bubble Sort dalam Python

Python
1def bubble_sort(a):2    n = len(a)3    for i in range(n - 1):4        swapped = False5        for j in range(n - 1 - i):6            if a[j] > a[j + 1]:7                a[j], a[j + 1] = a[j + 1], a[j]8                swapped = True9        if not swapped:10            break  # no swaps means the list is already sorted11    return a12
13
14nums = [5, 1, 4, 2, 8]15print("Before:", nums)16bubble_sort(nums)17print("After: ", nums)
Jalankan kode ini di Playground Python

FAQ Bubble Sort

Berapa kompleksitas waktu bubble sort?
Bubble sort berjalan dalam waktu O(n²) pada kasus rata-rata dan terburuk karena memakai loop bersarang. Dengan optimasi keluar lebih awal, bubble sort bisa mencapai O(n) pada array yang sudah terurut. Ruang tambahan yang dipakai O(1).
Apakah bubble sort stabil?

Ya. Bubble sort hanya menukar elemen yang bersebelahan jika urutannya benar-benar salah, jadi elemen yang sama tidak pernah saling melewati dan tetap mempertahankan urutan relatif aslinya.

Mengapa disebut bubble sort?

Pada setiap putaran, nilai terbesar yang belum terurut bergerak selangkah demi selangkah menuju ujung array, seperti gelembung (bubble) yang naik ke permukaan. Karena itulah namanya "bubble" sort.

Apa perbedaan bubble sort dan insertion sort?
Keduanya berjalan dalam O(n²), stabil, dan in-place, tetapi cara memindahkan datanya berbeda: bubble sort berulang kali menukar pasangan bersebelahan yang urutannya salah, sedangkan insertion sort mengambil setiap elemen dan menggesernya mundur ke tempat yang benar di bagian awal yang sudah terurut. Insertion sort biasanya melakukan lebih sedikit penulisan dan lebih cepat dalam praktik, terutama pada data yang hampir terurut.
Kapan sebaiknya memakai bubble sort, bukan quicksort?
Hampir tidak pernah untuk beban kerja nyata: waktu rata-rata O(n log n) milik quicksort jauh mengungguli O(n²) milik bubble sort, kecuali pada input yang sangat kecil. Bubble sort layak dipakai hanya saat list-nya sangat kecil atau hampir terurut, atau saat kamu ingin pengurutan stabil yang paling sederhana untuk mengajar.
Apakah optimasi keluar lebih awal mengubah kasus terburuk bubble sort?
Tidak. Mencatat apakah sebuah putaran melakukan penukaran membuat bubble sort bisa berhenti lebih awal dan mencapai O(n) pada input yang sudah terurut, tetapi array yang terurut terbalik tetap membutuhkan setiap perbandingan, jadi kasus terburuknya tetap O(n²). Optimasi ini hanya membantu kasus terbaik dan kasus yang hampir terurut.
Ilustrasi bahasa pemrograman di Coddy

Kuasai algoritma bersama Coddy

Mulai