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 3 dari 17

Rekursi dan bagi-kuasai

Mengurutkan tanpa membandingkan: urut hitung

Setelah pelajaran ini kamu bisa mengurutkan bilangan bulat berentang kecil dengan urut hitung dan menyebut kapan cara ini tidak berlaku.

±14 menitDiperiksa 1 Okt 2026

Materi

Urut gabung dan sorted() bekerja dengan membandingkan dua data. Urut hitung (counting sort) tidak membandingkan sama sekali. Syaratnya, kunci pengurutannya bilangan bulat dalam rentang kecil yang diketahui, misalnya nilai kuis 0 sampai 10 atau bintang ulasan 1 sampai 5. Disiapkan satu larik penghitung dengan satu kotak untuk setiap kemungkinan nilai, lalu data dibaca sekali dan kotak nilainya ditambah satu.

Setelah semua dihitung, hasil disusun dengan membaca larik penghitung dari nilai terkecil ke terbesar dan menuliskan setiap nilai sebanyak isi kotaknya. Biayanya O(n + k): n untuk membaca data dan k untuk membaca larik penghitung yang berukuran sebanyak rentang nilai. Ketika k kecil dibanding n, urut hitung lebih cepat daripada pengurutan dengan perbandingan.

Contoh: nilai kuis delapan siswa 3, 0, 2, 3, 1, 2, 3, 0 dengan rentang 0–3. Larik penghitungnya [2, 1, 2, 3], dibaca jadi 0, 0, 1, 2, 2, 3, 3, 3. Untuk data bercatatan seperti ulasan yang punya nama, setiap kotak berisi daftar catatan, bukan angka. Catatan dimasukkan sesuai urutan datang, sehingga urut hitung stabil: catatan berkunci sama keluar dalam urutan aslinya.

from collections import Counter

nilai = [3, 0, 2, 3, 1, 2, 3, 0]
print(Counter(nilai))   # Counter({3: 3, 0: 2, 2: 2, 1: 1})

Latihan

0/3 lulus

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

Latihan 3 dari 3

Data mana yang TIDAK cocok diurutkan dengan urut hitung?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke