Algoritma searching adalah teknik dalam pemrograman yang digunakan untuk mencari suatu data atau nilai tertentu di dalam struktur data seperti array, list, atau database. Algoritma ini sangat penting karena hampir semua aplikasi modern membutuhkan proses pencarian data secara cepat dan efisien.
Pemilihan algoritma searching yang tepat akan berpengaruh besar terhadap performa sistem, terutama saat menangani data dalam jumlah besar.
Tujuan Mempelajari Algoritma Searching
Memahami cara kerja pencarian data
Memilih algoritma yang sesuai dengan kondisi data
Meningkatkan efisiensi aplikasi
Mengoptimalkan proses lookup dan query data
Menjadi dasar pengembangan sistem skala besar
Jenis-Jenis Algoritma Searching
1️⃣ Linear Search
Pengertian
Linear Search adalah algoritma pencarian paling sederhana yang bekerja dengan memeriksa setiap elemen satu per satu hingga data ditemukan atau seluruh data telah diperiksa.
Karakteristik:
Tidak memerlukan data terurut
Mudah diimplementasikan
Kurang efisien untuk data besar
Contoh Kode JavaScript:
function linearSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) {
return i;
}
}
return -1;
}
let users = ["Andi", "Budi", "Citra"];
console.log(linearSearch(users, "Budi"));
2️⃣ Binary Search
Pengertian
Binary Search adalah algoritma pencarian yang bekerja dengan membagi data menjadi dua bagian secara berulang sampai data ditemukan.
⚠️ Syarat utama: Data harus sudah terurut (sorted).
Karakteristik:
Sangat efisien
Cocok untuk data besar
Membutuhkan data terurut
Contoh Kode JavaScript:
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
let numbers = [10, 20, 30, 40, 50];
console.log(binarySearch(numbers, 30));
3️⃣ Jump Search
Pengertian
Jump Search adalah algoritma pencarian yang melompat sejumlah langkah tertentu (biasanya √n) untuk mempercepat proses pencarian.
⚠️ Syarat: Data harus terurut.
Karakteristik:
Lebih cepat dari Linear Search
Lebih sederhana dari Binary Search
Cocok untuk data berukuran menengah
Contoh Kode JavaScript:
function jumpSearch(arr, target) {
let n = arr.length;
let step = Math.floor(Math.sqrt(n));
let prev = 0;
while (arr[Math.min(step, n) - 1] < target) {
prev = step;
step += Math.floor(Math.sqrt(n));
if (prev >= n) return -1;
}
for (let i = prev; i < Math.min(step, n); i++) {
if (arr[i] === target) return i;
}
return -1;
}
let data = [1, 3, 5, 7, 9, 11];
console.log(jumpSearch(data, 7));
4️⃣ Interpolation Search
Pengertian
Interpolation Search adalah algoritma pencarian yang memperkirakan posisi data berdasarkan nilai target dan distribusi data.
⚠️ Syarat: Data harus terurut dan terdistribusi secara merata.
Karakteristik:
Sangat cepat pada data terdistribusi merata
Lebih kompleks
Kurang efektif jika distribusi data tidak merata
Contoh Kode JavaScript:
function interpolationSearch(arr, target) {
let low = 0;
let high = arr.length - 1;
while (low <= high && target >= arr[low] && target <= arr[high]) {
let pos = low + Math.floor(
((target - arr[low]) * (high - low)) / (arr[high] - arr[low])
);
if (arr[pos] === target) return pos;
if (arr[pos] < target) low = pos + 1;
else high = pos - 1;
}
return -1;
}
let sortedData = [10, 20, 30, 40, 50];
console.log(interpolationSearch(sortedData, 40));
Contoh Penggunaan Algoritma Searching
✔ Pencarian Data User
Mencari username
Mencari ID user
Validasi akun
✔ Lookup Database
Query data berdasarkan ID
Filter hasil pencarian
Optimasi performa aplikasi
Perbandingan Singkat Algoritma Searching
Algoritma | Data Terurut | Kecepatan | Kompleksitas |
|---|---|---|---|
Linear | ❌ | Lambat | O(n) |
Binary | ✅ | Cepat | O(log n) |
Jump | ✅ | Sedang | O(√n) |
Interpolation | ✅ | Sangat Cepat* | O(log log n) |
*Jika data terdistribusi merata
Kesimpulan
Algoritma searching merupakan bagian penting dalam pemrograman modern. Pemilihan algoritma yang tepat akan meningkatkan efisiensi, performa, dan skalabilitas aplikasi.
Semakin besar data, semakin penting memilih algoritma pencarian yang tepat.
1️⃣ Latihan & Soal (Bertahap)
🟢 LEVEL 1 — DASAR (Pemahaman Konsep)
Soal 1
Diberikan array:
[5, 12, 8, 20, 15]
Cari angka 8 menggunakan Linear Search.
✅ Jawaban:
function linearSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) return i;
}
return -1;
}
📌 Pembahasan:
Linear Search mengecek data satu per satu tanpa syarat data terurut.
Soal 2
Mengapa Binary Search tidak bisa digunakan pada array:
[10, 5, 30, 20]
✅ Jawaban:
Karena Binary Search membutuhkan data terurut. Array tersebut acak.
🔵 LEVEL 2 — MENENGAH (Logika & Efisiensi)
Soal 3
Urutkan array dan lakukan Binary Search untuk mencari angka 30.
✅ Jawaban:
let data = [10, 5, 30, 20].sort((a, b) => a - b);
📌 Pembahasan:
Sorting adalah prasyarat sebelum Binary, Jump, atau Interpolation Search.
🔴 LEVEL 3 — LANJUT (Simulasi Dunia Nyata)
Soal 4
Cari user berdasarkan ID dari daftar user.
let users = [
{ id: 101, name: "Andi" },
{ id: 102, name: "Budi" },
{ id: 103, name: "Citra" }
];
✅ Jawaban (Linear Search):
function findUserById(users, id) {
return users.find(user => user.id === id);
}
2️⃣ Visualisasi Algoritma Searching (Konseptual)
🔹 Linear Search
Data: [10, 20, 30, 40]
Cari: 30
10 ❌ → 20 ❌ → 30 ✅
🔹 Binary Search
Data: [10, 20, 30, 40, 50]
Cari: 40
Mid = 30 → kanan
Mid = 40 → ketemu
🔹 Jump Search
Data terurut, lompat √n:
[10, 20, 30, 40, 50, 60]
Lompat ke 30 → lanjut ke 50 → cek linear
📌 Visualisasi membantu memahami alur berpikir, bukan hanya kodenya.
3️⃣ Studi Kasus Backend
🎯 Studi Kasus 1: Pencarian User di Backend API
Masalah:
Backend perlu mencari user berdasarkan email saat login.
Implementasi JavaScript (Node.js):
function findUserByEmail(users, email) {
return users.find(user => user.email === email);
}
📌 Digunakan pada:
Login
Validasi akun
Reset password
🎯 Studi Kasus 2: Validasi Produk di Inventory
Masalah:
Cari produk berdasarkan SKU.
function findProduct(products, sku) {
return products.find(p => p.sku === sku);
}
📌 Umum digunakan di:
E-commerce
Warehouse system
POS system
4️⃣ Integrasi dengan Database & API
🔹 Contoh: API Search User (Express.js)
app.get("/users/:id", async (req, res) => {
const id = Number(req.params.id);
const user = await User.findOne({ id });
if (!user) {
return res.status(404).json({ message: "User not found" });
}
res.json(user);
});
📌 Di database:
Algoritma searching dioptimalkan oleh index
Konsep searching tetap sama, hanya skalanya berbeda
🔹 Contoh Query Database (MongoDB)
db.users.find({ email: "andi@email.com" })
📌 Database menggunakan:
B-Tree
Hash index
yang secara konsep adalah searching algorithm tingkat lanjut
5️⃣ Ringkasan Pemilihan Algoritma Searching
Kondisi | Algoritma |
|---|---|
Data kecil / acak | Linear Search |
Data besar & terurut | Binary Search |
Data terurut & menengah | Jump Search |
Data terdistribusi merata | Interpolation Search |
Database | Index-based Search |
🎯 Kesimpulan Utama
✔ Searching adalah jantung sistem backend
✔ Pemilihan algoritma memengaruhi performa
✔ Di industri, searching → API → Database
✔ Konsep sederhana → sistem kompleks
Algoritma yang baik = aplikasi yang cepat & scalable
_ud4FSPPC4.png)