Pengurutan Sederhana · Pelajaran 4 dari 10

Bubble sort

9 menit baca · BelajarCode

Bubble sort membandingkan setiap pasangan data yang bersebelahan dan menukarnya jika salah urutan. Setelah satu putaran, data terbesar "menggelembung" ke posisi paling kanan.

Jejak bubble sort untuk 5, 1, 4, 2, 8
PutaranUrutan setelah putaranPenukaran
Awal5 1 4 2 8
11 4 2 5 83 kali
21 2 4 5 81 kali
31 2 4 5 80 kali, berhenti
Python
1def bubble_sort(data):2    data = data.copy()3    n = len(data)4    for putaran in range(n - 1):5        ditukar = False6        for i in range(n - 1 - putaran):7            if data[i] > data[i + 1]:8                data[i], data[i + 1] = data[i + 1], data[i]9                ditukar = True10        if not ditukar:11            break12    return data1314print(bubble_sort([5, 1, 4, 2, 8]))15print(bubble_sort([64, 34, 25, 12, 22, 11, 90]))
Keluaran
[1, 2, 4, 5, 8]
[11, 12, 22, 25, 34, 64, 90]

Dua perbaikan kecil pada kode ini:

  • range(n - 1 - putaran): setelah setiap putaran, data terbesar sudah di tempatnya, jadi bagian akhir tidak perlu diperiksa lagi.
  • ditukar: jika satu putaran penuh tidak ada penukaran, data sudah urut dan perulangan dihentikan.

Analisis

  • Terburuk (data terbalik): sekitar n²/2 perbandingan, jadi O(n²).
  • Terbaik (data sudah urut): hanya satu putaran, jadi O(n) berkat penanda ditukar.
  • Stabil: data yang nilainya sama tidak bertukar posisi.

Bubble sort mudah dipahami, tetapi terlalu lambat untuk data besar. Nilainya ada pada pelajaran tentang cara membandingkan dan menukar.

Cek pemahaman

Setelah putaran pertama bubble sort pada data apa pun, apa yang pasti benar?

Latihan

Hitung perbandingan dan penukaran

Ubah bubble_sort supaya juga mengembalikan banyaknya perbandingan dan penukaran. Bandingkan hasilnya untuk data yang sudah urut [1, 2, 3, 4, 5] dan data terbalik [5, 4, 3, 2, 1].

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Latih konsep ini

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi