Memahami dan Mengimplementasikan Sequential Search di Python

Visualisasi Proses Pencarian Sekuensial DATA ARRAY 5 12 8 30 15 PENCARIAN Target: 8 8

Ilustrasi proses membandingkan setiap elemen satu per satu.

Apa itu Sequential Search?

Sequential Search, atau sering juga disebut Linear Search, adalah metode pencarian data yang paling sederhana dan mendasar. Algoritma ini bekerja dengan cara memeriksa setiap elemen dalam sebuah koleksi (seperti list atau array) secara berurutan, mulai dari elemen pertama hingga elemen terakhir, sampai nilai yang dicari ditemukan.

Prinsip kerjanya sangat intuitif: jika kita mencari buku tertentu di rak, kita akan mulai dari buku paling kiri, memeriksanya, lalu geser ke buku berikutnya, dan seterusnya. Jika kita sudah memeriksa semua buku namun tidak menemukannya, maka elemen tersebut tidak ada dalam koleksi.

Meskipun sederhana, penting untuk dipahami bahwa Sequential Search kurang efisien untuk kumpulan data yang sangat besar, terutama jika data tersebut sudah terurut. Dalam kasus data terurut, algoritma seperti Binary Search jauh lebih cepat karena mampu membagi ruang pencarian menjadi dua bagian pada setiap langkahnya. Namun, Sequential Search memiliki keunggulan karena tidak memerlukan data harus dalam keadaan terurut.

Kompleksitas Waktu

Kompleksitas waktu (time complexity) dari Sequential Search adalah:

Notasi 'n' merujuk pada jumlah total elemen dalam list.

Contoh Program Sequential Search Python

Berikut adalah implementasi dasar dari algoritma Sequential Search menggunakan bahasa pemrograman Python:


def sequential_search(data_list, target):
    """
    Melakukan pencarian sekuensial pada list yang diberikan.

    Args:
        data_list (list): List angka atau string tempat pencarian dilakukan.
        target (any): Nilai yang dicari.

    Returns:
        int: Indeks dari elemen jika ditemukan, atau -1 jika tidak ditemukan.
    """
    
    # Iterasi melalui setiap indeks dan elemen dalam list
    for index, element in enumerate(data_list):
        # Bandingkan elemen saat ini dengan nilai target
        if element == target:
            # Jika ditemukan, kembalikan indeksnya
            return index
            
    # Jika loop selesai tanpa menemukan target
    return -1

# --- Contoh Penggunaan ---

# 1. Definisikan list data
angka = [10, 45, 23, 89, 5, 67, 12, 99]
target_ditemukan = 67
target_tidak_ada = 50

# 2. Melakukan pencarian
hasil_1 = sequential_search(angka, target_ditemukan)
hasil_2 = sequential_search(angka, target_tidak_ada)

print(f"List Data: {angka}")

if hasil_1 != -1:
    print(f"Target {target_ditemukan} ditemukan pada indeks: {hasil_1}")
else:
    print(f"Target {target_ditemukan} tidak ditemukan.")

if hasil_2 != -1:
    print(f"Target {target_tidak_ada} ditemukan pada indeks: {hasil_2}")
else:
    print(f"Target {target_tidak_ada} tidak ditemukan.")

# Output yang diharapkan:
# Target 67 ditemukan pada indeks: 5
# Target 50 tidak ditemukan.
            

Kapan Menggunakan Sequential Search?

Meskipun performanya O(n), ada beberapa skenario di mana Sequential Search masih merupakan pilihan terbaik:

  1. Data Tidak Terurut: Jika list Anda tidak diurutkan dan Anda tidak ingin menghabiskan waktu untuk mengurutkannya (yang biasanya O(n log n)), pencarian sekuensial adalah cara termudah.
  2. List Sangat Kecil: Untuk list dengan hanya beberapa elemen, overhead (biaya tambahan) untuk mengimplementasikan algoritma yang lebih kompleks seperti Binary Search tidak sepadan.
  3. Struktur Data Khusus: Ketika Anda bekerja dengan struktur data yang tidak mendukung akses acak (seperti Linked List), Sequential Search seringkali menjadi satu-satunya pilihan yang praktis.

Sebagai kesimpulan, Sequential Search adalah fondasi penting dalam ilmu komputasi. Memahami cara kerjanya memberikan dasar yang kuat sebelum beralih ke algoritma pencarian yang lebih canggih dan berkinerja tinggi.