Algoritma searching adalah suatu metode yang digunakan untuk mencari data tertentu dalam sebuah struktur data seperti array, list, atau tree. Tujuannya adalah untuk menemukan posisi atau keberadaan data yang dicari dalam struktur data dengan cara yang efisien dan efektif. Algoritma searching digunakan pada berbagai jenis aplikasi, seperti mesin pencari, permainan, dan aplikasi bisnis.
Ada beberapa jenis algoritma searching yang umum digunakan di antaranya:
Algoritma ini sangat sederhana dan mudah dipahami. Algoritma linear search bekerja dengan cara membandingkan setiap elemen pada list atau array secara berurutan hingga data yang dicari ditemukan atau seluruh elemen sudah dibandingkan. Algoritma ini cocok digunakan untuk data yang jumlahnya tidak terlalu besar. Namun, jika data yang dicari berada di posisi akhir atau tidak terdapat dalam list atau array, algoritma ini akan membutuhkan waktu yang lama untuk menyelesaikan pencarian.
Contoh penggunaan linerar search dalam bahasa C :
#include
int search(int arr[], int N, int x)
{
for (int i = 0; i < N; i++)
if (arr[i] == x)
return i;
return -1;
}
// Driver code
int main(void)
{
int arr[] = { 2, 3, 4, 10, 40 };
int x = 10;
int N = sizeof(arr) / sizeof(arr[0]);
// Function call
int result = search(arr, N, x);
(result == -1)
? printf("Element is not present in array")
: printf("Element is present at index %d", result);
return 0;
}
Algoritma binary search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan membandingkan nilai data yang dicari dengan nilai tengah list atau array. Jika nilai data yang dicari lebih besar dari nilai tengah, maka algoritma akan mencari pada setengah kanan list atau array, dan begitu juga sebaliknya. Binary search memiliki kompleksitas waktu yang lebih baik dibandingkan dengan linear search, namun hanya dapat digunakan pada data yang sudah terurut.
Contoh penggunaan binary search dalam bahasa C :
#include
int binarySearch(int arr[], int l, int r, int x)
{
while (l <= r) {
int m = l + (r - l) / 2;
if (arr[m] == x)
return m;
if (arr[m] < x)
l = m + 1;
else
r = m - 1;
}
return -1;
}
// Driver code
int main(void)
{
int arr[] = { 2, 3, 4, 10, 40 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? printf("Element is not present"
" in array")
: printf("Element is present at "
"index %d",
result);
return 0;
}
Algoritma interpolation search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari berdasarkan nilai data pada posisi awal dan akhir list atau array. Algoritma ini lebih cepat daripada binary search jika data yang dicari terdapat pada posisi awal atau akhir list atau array.
Algoritma hash search digunakan untuk mencari data pada tabel hash. Algoritma ini bekerja dengan menghitung nilai hash dari data yang dicari dan mencari data tersebut pada tabel hash. Algoritma ini memiliki kompleksitas waktu yang konstan dan sangat cepat, namun membutuhkan memori yang lebih besar.
Algoritma exponential search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari dengan cara menggandakan jarak antara posisi awal dan akhir list atau array. Algoritma ini lebih cepat daripada binary search jika data yang dicari terdapat pada posisi awal list atau array.
Algoritma jump search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari dengan cara melompati beberapa elemen pada list atau array. Algoritma ini lebih cepat daripada linear search, namun lebih lambat daripada binary search.
Algoritma fibonacci search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari dengan cara menggunakan deret fibonacci. Algoritma ini lebih cepat daripada linear search, namun lebih lambat daripada binary search.
Algoritma ternary search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan membagi list atau array menjadi tiga bagian dan memeriksa apakah data yang dicari berada pada bagian kiri, tengah, atau kanan. Algoritma ini lebih cepat daripada linear search, namun lebih lambat daripada binary search.
Karakteristik algoritma searching meliputi efisiensi, akurasi, keamanan, modularitas, scalability, keterbacaan, dan kesederhanaan.