Anda di halaman 1dari 9

SEARCHING

KELOMPOK 10
Marsha 2204411434
Mashar 2204411435
Afni 2204411432

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNIK KOMPUTER
UNIVERSITAS COKROAMINOTO PALOPO
2023
Sequential Search

Sequential search adalah teknik pencarian data dimana data dicari secara urut dari
depan ke belakang atau dari awal sampai akhir berdasarkan key yang dicari (C, Antonius
Rachmat dan M, Aditya Wikan, 2016). Kelebihan dari proses pencarian secara sequential
search jika data yang dicari terletak di depan, maka data akan ditemukan dengan cepat. Tetapi
dibalik kelebihannya ini, teknik ini juga memiliki kekurangan jika data yang dicari terletak di
belakang atau paling akhir, maka akan membutuhkan waktu yang lama dalam proses
pencariannya. Algoritma sequential search termasuk kedalam algoritma pencarian yang
paling sederhana. Sequential search disebut juga pencarian lurus (linear search). Pada
dasarnya, algoritma pencarian beruntun adalah proses membandingkan setiap elemen larik
secara beruntun satu persatu, mulai dari 14 elemen pertama, sampai elemen yang dicari
ditemukan, atau seluruh elemen sudah diperiksa. Atau singkatnya algoritma sequential search
ini mencari data dari awal sampai ditemukan, setelah data ditemukan pencarian berhenti.

Teknik pencarian data dari array yang paling mudah adalah dengan cara sequential
search, dimana data dalam array dibaca 1 demi satu, diurutkan dari index terkecil ke index
terbesar, maupun sebaliknya. Contoh : Array : int a[5] = {0,3,6,10,1} (index array pada
bahasa C++ dimulai dari index ke 0 !!!) jika kita ingin mencari bilangan 6 dalam array
tersebut, maka proses yang terjadi kita mencari a) dari array index ke-0, yaitu 0, dicocokan
dengan bilangan yang akan dicari, jika tidak sama, maka mencari ke index berikutnya b) pada
array index ke-1, juga bukan bilangan yang dicari, maka kita mencari lagi pada index
berikutnya c) pada array index ke-2, ternyata bilangan yang kita cari ada ditemukan, maka
kita keluar dari looping pencarian.

Contoh source :
2. Squencial Search Order List

Pencarian berurutan , atau pencarian linier, adalah algoritma pencarian yang diterapkan
pada daftar. Ini adalah salah satu pendekatan yang paling intuitif (beberapa bahkan mungkin
mengatakan naif) untuk mencari: cukup lihat semua entri secara berurutan sampai elemen
ditemukan.
Diberi nilai target , algoritme mengulangi setiap entri dalam daftar dan
membandingkannya dengan target. Jika mereka cocok maka itu adalah pencarian yang
berhasil dan algoritme kembali true. Jika akhir daftar tercapai dan tidak ada kecocokan yang
ditemukan, itu adalah pencarian yang gagal dan algoritme kembali false.
Modifikasi yang berguna dari algoritme ini adalah mengembalikan indeks target dalam
daftar saat kecocokan ditemukan, bukan hanya true. Dalam kasus pencarian yang gagal,
nomor khusus yang menunjukkan kegagalan akan dikembalikan, biasanya -1. Modifikasi
kecil ini membuat keluaran kami lebih berguna, meskipun tidak berpengaruh pada jumlah
langkah yang diambil algoritme. Karena itu, kami sebaiknya mengimplementasikan versi ini
sebagai gantinya.
Kode semu
Diberikan daftar L Panjang N dengan elemen th dilambangkan L_i, , dan nilai target
dilambangkan T:L Panjang N dengan element h di lambangkan L dan nilai trget di
lambangkan T:

Perhatikan bahwa kita menggunakan targetimplementasi metode , equalsbukan list.get(i).


Melakukan hal ini memungkinkan kita mengubah definisi kesetaraan dengan memperluas
Tdan membebani metode. Ini memberi kami fleksibilitas yang lebih besar dalam kriteria
pencarian kami.
a. Penggunaan
Pencarian berurutan jarang digunakan dalam praktiknya karena alternatif yang lebih baik
seperti pencarian biner dan tabel hash. Yang mengatakan, pencarian sekuensial memiliki
keuntungan karena mudah diterapkan dan tidak memerlukan daftar untuk diurutkan.
Akibatnya, ini biasanya diterapkan pada daftar yang tidak disortir karena mereka tidak dapat
memanfaatkan alternatif yang lebih baik… setidaknya tidak dengan komputer klasik.
Selain itu, dalam kasus di mana daftar kecil atau pencarian tidak terlalu umum, pencarian
sekuensial sebenarnya terbukti menjadi solusi yang lebih cepat karena tidak memerlukan
daftar yang dipermasalahkan untuk diurutkan terlebih dahulu.

b. Analisis

▪ Kompleksitas Waktu

Operasi dasar dan dominan dari pencarian berurutan (dan algoritma pencarian pada
umumnya) adalah perbandingan. Dengan demikian kita dapat mengukur waktu berjalan dari
algoritma ini dengan menghitung jumlah perbandingan yang dibuat berdasarkan daftar
ukuranN.
Kasus terbaik
Kasus terburuk
Kasus Rata-Rata

▪ Kompleksitas Ruang

Algoritme bersifat iteratif, artinya satu-satunya ruang yang dibutuhkan adalah variabel
tunggal yang melacak indeks elemen saat ini yang sedang diperiksa. Dengan demikian,
pencarian sekuensial selalu memiliki kompleksitas spasial yang konstanO ( 1 )

Kita dapat meringkasnya dengan tabel berikut:


c. Variasi

▪ Daftar Probabilistik

Ingatlah bahwa analisis kami tentang kerumitan pencarian berurutan mengasumsikan bahwa
setiap elemen dalam daftar memiliki kemungkinan yang sama (yakni $\frac{1}{n}$ peluang)
untuk dicari. Jika kita menghapus asumsi ini, kita memiliki kasus yang lebih umum dengan
elemen $i$th yang memiliki kemungkinan $p_i$ untuk dicari. Setiap kali kita menganalisis
kasus sukses dari kompleksitas rata-rata, semua probabilitas ini harus berjumlah 1:1n
kesempatan) untuk dicari. Jika kita menghilangkan asumsi ini, kita memiliki kasus yang lebih
umum dengan thei
elemen th memiliki beberapa probabilitaspi
dari sedang dicari. Setiap kali kita menganalisis kasus sukses dari kompleksitas rata-rata,
semua probabilitas ini harus berjumlah sum 1:

∑i=1npi=1

Sama seperti sebelumnya, kasus kegagalan akan selalu mengambil $n$ perbandingan.N
perbandingan.
Kami dapat menyatakan waktu berjalan rata-rata dari algoritme pencarian probabilistik
seperti:

p1s1+p2s2+⋯+pnsn= ∑i=1npisi

Karena pencarian berurutan mengambil $i$ perbandingan pada elemen $i$th, kita dapat
menulis ulang ini untuk pencarian berurutan probabilistik sebagai:
p1+2p2+⋯+npn= ∑i=1nipi

Jika kita mengetahui frekuensi pencarian target tertentu, kita dapat mengatur ulang
daftar tersebut sehingga hal-hal dengan probabilitas lebih tinggi untuk dicari berada di awal.
Dengan demikian mengurangi jumlah perbandingan yang dibutuhkan rata-rata.
Cara untuk mengimplementasikannya dalam praktik mungkin dengan memindahkan
item yang baru-baru ini dicari 1 tempat ke depan dalam daftar (dengan asumsi urutan daftar
tidak penting). Ini pada akhirnya akan menyelesaikan daftar ke dalam bentuk idealnya,
dengan asumsi elemen-elemen tersebut dicari dengan probabilitas tertentu.
Jika kita diberi distribusi probabilitas tertentu, kita dapat membuat pernyataan yang
lebih kuat tentang kerumitan pencarian. Misalnya, jika distribusinya geometris dan elemen
disusun dari yang paling mungkin hingga yang paling tidak mungkin, kompleksitas rata-
ratanya adalah $O(1)$.O(1)

3. Problem Squencial With Search

Anda mungkin juga menyukai