Pencarian Linear, Set, dan Biaya Operasi

Bandingkan cara mencari anggota data melalui langkah yang benar-benar dikerjakan.

Mapel
Pemrograman
Jenjang
Kuliah
Waktu baca
3 menit
Terbit
8 Oktober 2026

Tujuan belajar

Kamu dapat menelusuri pencarian linear, menjelaskan batas biaya O(n), dan memilih set untuk pemeriksaan keanggotaan berulang dengan mempertimbangkan biayanya.

Bekal awal

Kamu memahami list, perulangan, fungsi, dan perbandingan nilai. Notasi n di sini berarti banyaknya elemen data.

Menghitung pekerjaan, bukan hanya waktu jam

Untuk mencari satu nama di list tanpa informasi urutan, program dapat memeriksa elemen dari depan. Jika nama berada di awal, satu pemeriksaan cukup. Jika berada di akhir atau tidak ada, program harus memeriksa hingga n elemen. Karena jumlah pemeriksaan terburuk bertambah sebanding dengan panjang list, kita menyebutnya O(n). Notasi ini menjelaskan pola pertumbuhan, bukan berapa milidetik sebuah komputer tertentu akan bekerja. Ukuran input dan jenis operasi yang dihitung harus selalu disebutkan.

Set menyimpan anggota unik dan menyediakan pemeriksaan keanggotaan yang biasanya cepat melalui hashing. Membentuk set dari list sendiri memerlukan pekerjaan dan memori. Maka mengganti satu pencarian kecil dengan konversi set belum tentu bermanfaat. Bila data yang sama akan dicari berkali-kali dan urutan tidak diperlukan untuk pencarian itu, membangun set sekali dapat masuk akal. Perhatikan pula bahwa set menghilangkan duplikasi: jumlah anggota set tidak selalu sama dengan jumlah baris awal. Jika jumlah kemunculan tiap nama penting, jangan membuang data asal.

Contoh kerja 1: pencarian linear

def posisi(data, target):
    for indeks, item in enumerate(data):
        if item == target:
            return indeks
    return -1

print(posisi(["Ayu", "Bima", "Cici"], "Cici"))

Jejak: pemeriksaan 1 membandingkan Ayu dengan Cici, salah; pemeriksaan 2 Bima, salah; pemeriksaan 3 Cici, benar, lalu fungsi mengembalikan indeks 2. Keluaran “2”. Untuk target “Danu”, tiga pemeriksaan gagal dan return -1 tercapai. Untuk target “Ayu”, fungsi berhenti sesudah satu pemeriksaan. Ini menunjukkan kasus terbaik dan terburuk berbeda, walaupun algoritmanya sama.

Contoh kerja 2: banyak pertanyaan pada data sama

peserta = ["Ayu", "Bima", "Cici", "Ayu"]
daftar_unik = set(peserta)
print("Bima" in daftar_unik)
print(len(daftar_unik))

Set berisi Ayu, Bima, dan Cici; Ayu yang kedua tidak menambah anggota baru. Keluaran dua baris ialah “True” dan “3”. Jangan mengandalkan urutan cetak set, karena contoh tidak mencetak set itu sendiri. Untuk banyak pemeriksaan nama, daftar_unik dapat dipakai kembali tanpa membuat set pada setiap pertanyaan.

Kesalahan umum dan debugging

Kesalahan konsep yang sering muncul ialah menyebut setiap penggunaan set “O(1) pasti”. Hashing biasanya memberi waktu rata-rata yang baik, tetapi biaya membentuk set, kualitas hash, dan kondisi terburuk tetap relevan. Kesalahan kode lain adalah memakai if item == target lalu mengembalikan nilai item ketika kontrak fungsi meminta posisi indeks. Tulis kontrak keluaran terlebih dahulu, lalu uji target di awal, di akhir, dan tidak ditemukan. Jangan memakai -1 sebagai indeks list tanpa sengaja: dalam Python, data[-1] berarti elemen terakhir, bukan “tidak ada”.

Pikirkan kontrak dan ukuran input

Jika fungsi posisi mengembalikan -1, pemanggil harus memeriksa nilai itu sebelum mengakses list. Menggunakan hasil -1 langsung sebagai indeks justru mengambil elemen terakhir dan menyamarkan “tidak ditemukan”. Catat juga apa yang terjadi pada list kosong: perulangan menjalankan nol pemeriksaan dan fungsi mengembalikan -1. Saat membandingkan dua pendekatan, ukur pekerjaan yang sama. Untuk satu pencarian pada tiga elemen, kode yang paling mudah dipahami bisa lebih baik. Untuk ribuan pencarian pada data sama, biaya membuat set dapat dibagi ke banyak pertanyaan. Tulislah asumsi ini saat menjelaskan pilihan algoritma.

Ringkasan dan latihan

Pencarian linear memeriksa hingga n elemen; set berguna untuk banyak uji keanggotaan pada data yang sama bila duplikasi tidak diperlukan. Buat list sepuluh nama dan hitung berapa perbandingan yang dilakukan pencarian linear untuk target pertama, terakhir, dan tidak ada. Lalu jelaskan kapan biaya membangun set sekali layak dibayar.

python · 7 baris
def posisi(data, target):
    for indeks, item in enumerate(data):
        if item == target:
            return indeks
    return -1

print(posisi(["Ayu", "Bima", "Cici"], "Cici"))
Pencarian linear mengembalikan indeks atau -1

Sumber belajar

Penjelasan dan contoh disusun ulang untuk materi ini; sumber dapat dibuka untuk belajar lebih lanjut.

Cek pemahaman: Pencarian Linear, Set, dan Biaya Operasi

Lembar kerja · jawab langsung di halaman ini

Soal
3

Memuat soal…