Menu
CoddyTech

Linear Search (Pencarian Linear)

Terakhir diperbarui

Linear search (disebut juga sequential search) adalah algoritma pencarian paling sederhana: mulai dari elemen pertama dan bandingkan setiap elemen dengan target sampai kamu menemukan yang cocok atau elemennya habis. Algoritma ini tidak membuat asumsi apa pun tentang datanya, jadi array boleh tidak terurut, dan elemennya boleh berupa apa saja yang bisa dibandingkan kesamaannya.

Animasi di atas menyorot setiap perbandingan saat pemindaian bergerak dari kiri ke kanan dan berhenti begitu target muncul. Kesederhanaannya dibayar dengan kecepatan: pada kasus terburuk, setiap elemen diperiksa, jadi algoritma ini berjalan dalam O(n). Jika datanya terurut, binary search menemukan jawaban yang sama dalam O(log n), dan jika kamu perlu mengurutkan data terlebih dahulu, lihat merge sort.

Kompleksitas waktu dan ruang

KasusKompleksitasCatatan
Kasus terbaikO(1)Elemen pertama adalah target.
Kasus rata-rataO(n)Rata-rata separuh elemen diperiksa sebelum target ditemukan.
Kasus terburukO(n)Target ada di posisi terakhir, atau sama sekali tidak ada.
RuangO(1)Hanya indeks saat ini yang disimpan.

Langkah demi langkah

LangkahApa yang terjadi
1Mulai dari indeks 0, elemen pertama array.
2Bandingkan elemen saat ini dengan nilai target.
3Jika sama, kembalikan indeks saat ini (ditemukan).
4Jika tidak, geser satu posisi ke kanan dan ulangi.
5Jika akhir array tercapai tanpa ada yang cocok, target tidak ada (kembalikan -1).

Contoh penerapan

Mencari 5 di [7, 3, 9, 1, 5, 8, 2]:

PerbandinganIndeksElemenHasil
1077 ≠ 5: lanjutkan pemindaian.
2133 ≠ 5: lanjutkan pemindaian.
3299 ≠ 5: lanjutkan pemindaian.
4311 ≠ 5: lanjutkan pemindaian.
5455 = 5: ditemukan di indeks 4.
Pakai saatHindari saat
Datanya tidak terurut atau terus berubahDatanya terurut, sehingga binary search jauh lebih cepat secara eksponensial
Koleksinya kecil, jadi kesederhanaan lebih menguntungkanDatanya besar dan dicari berulang kali
Kamu hanya punya akses berurutan (stream, linked list)Kamu sanggup memakai indeks atau hash table untuk pencarian O(1)

Implementasi Linear Search yang rapi dan siap dijalankan dalam Python, JavaScript, Java, C++, C, Pseudocode. Pilih bahasa, salin kodenya, atau buka langsung di Coddy Playground.

Kode Linear Search dalam Python

Python
1def linear_search(a, target):2    # Scan left to right until the target appears3    for i in range(len(a)):4        if a[i] == target:5            return i6    return -17
8
9nums = [7, 3, 9, 1, 5, 8, 2]10print("Index of 5:", linear_search(nums, 5))11print("Index of 4:", linear_search(nums, 4))
Jalankan kode ini di Playground Python
Berapa kompleksitas waktu linear search?
O(n) pada kasus rata-rata dan terburuk (pemindaian mungkin harus mengunjungi setiap elemen) dan O(1) pada kasus terbaik saat elemen pertama adalah target. Ruang tambahan yang dipakai O(1).
Apakah linear search membutuhkan data yang terurut?

Tidak, dan itulah keunggulan utamanya. Linear search bekerja pada data yang sama sekali tidak terurut karena memeriksa kesamaan setiap elemen; urutan tidak pernah berpengaruh. Sebaliknya, binary search hanya bekerja pada array yang terurut.

Kapan linear search lebih baik daripada binary search?
Saat datanya tidak terurut dan hanya dicari sekali (mengurutkannya dulu berbiaya O(n log n)), saat koleksinya sangat kecil, atau saat kamu hanya punya akses berurutan seperti stream atau linked list. Untuk pencarian berulang pada array terurut, binary search yang menang.
Apakah linear search sama dengan sequential search?

Ya, kedua nama itu merujuk ke algoritma yang sama: pindai elemen secara berurutan sampai target ditemukan atau koleksinya habis.

Berapa banyak perbandingan yang dilakukan linear search secara rata-rata?
Jika target ada dan peluangnya sama untuk berada di posisi mana pun, rata-rata sekitar n/2 perbandingan; jika target tidak ada, tepat n. Pertumbuhan linear itulah alasan algoritma ini disebut linear search.
Ilustrasi bahasa pemrograman di Coddy

Kuasai algoritma bersama Coddy

Mulai