Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Struktur Data & Algoritma

Pelajaran 2 dari 17

Rekursi dan bagi-kuasai

Bagi-kuasai: urut gabung

Setelah pelajaran ini kamu bisa menggabungkan dua daftar urut dengan dua penunjuk, menyusun urut gabung secara rekursif, dan menghitung biayanya.

±14 menitDiperiksa 1 Okt 2026

Materi

Bagi-kuasai adalah strategi yang memecah masalah menjadi beberapa bagian sejenis yang lebih kecil, menyelesaikan tiap bagian secara rekursif, lalu menggabungkan hasilnya. Urut gabung (merge sort) adalah contoh paling terkenal: daftar dibelah dua sampai setiap bagian berisi satu data, karena daftar satu data pasti sudah urut, lalu bagian-bagian itu digabung kembali berpasangan.

Seluruh pekerjaan ada di langkah menggabung. Dua daftar yang masing-masing sudah urut dibaca dengan dua penunjuk dari depan. Di setiap langkah, data yang lebih kecil di antara dua penunjuk diambil dan penunjuknya maju. Begitu salah satu daftar habis, sisa daftar lainnya sudah urut dan tinggal disalin ke belakang. Menggabung dua daftar dengan total n data butuh paling banyak n langkah.

LangkahKiri [3, 9]Kanan [4, 5, 12]Hasil
13 dipilih4[3]
294 dipilih[3, 4]
395 dipilih[3, 4, 5]
49 dipilih12[3, 4, 5, 9]
sisahabis12 disalin[3, 4, 5, 9, 12]

Biayanya dihitung per tingkat. Setiap tingkat pembelahan menggabungkan seluruh n data sekali, dan banyaknya tingkat adalah berapa kali n bisa dibagi dua sampai tersisa 1, yaitu sekitar log₂ n. Totalnya O(n log n). Untuk sejuta data itu sekitar 20 juta langkah, jauh di bawah cara yang membandingkan setiap pasangan data. Urut gabung juga stabil bila data yang sama diambil dari daftar kiri lebih dulu, sifat yang sama yang dijamin sorted() di Python.

def belah(data):
    tengah = len(data) // 2
    return data[:tengah], data[tengah:]

# belah([8, 1, 6, 2, 7]) -> ([8, 1], [6, 2, 7])

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Urut gabung dijalankan pada 1.024 data. Berapa tingkat pembelahan sampai setiap bagian berisi satu data, dan kira-kira berapa langkah penggabungan seluruhnya?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke