binary search adalah

Binary Search Adalah: Pengertian, Cara Kerja dan Implementasi

Binary search adalah salah satu algoritma yang penting dan efisien. Algoritma ini memainkan peran besar dalam mencari elemen tertentu dalam kumpulan data yang telah diurutkan.

Pada artikel ini kita akan belajar secara mendalam tentang binary search, mulai dari konsep dasar hingga implementasi dalam berbagai bahasa pemrograman. Yuk simak!

Binary Search merupakan algoritma pencarian yang membagi data menjadi dua bagian dan mencari elemen yang dicari di salah satu bagian tersebut. Algoritma ini mengasumsikan bahwa data sudah terurut, entah itu dalam urutan menaik atau menurun.

Jika elemen yang dicari lebih besar dari elemen tengah data, maka pencarian dilanjutkan ke bagian kanan data. Sebaliknya, jika elemen yang dicari lebih kecil dari elemen tengah, pencarian dilanjutkan ke bagian kiri data. Proses ini diulangi sampai elemen yang dicari ditemukan atau seluruh data telah diperiksa.

Cara Kerja Binary Search

apa itu binary search

Langkah pertama dalam algoritma ini adalah memastikan data yang digunakan telah diurutkan. Jika data belum terurut, langkah pertama adalah mengurutkannya dengan metode tertentu, seperti pengurutan QuickSort atau MergeSort.

Selanjutnya, algoritma ini membagi data menjadi dua bagian, setengah bagian bawah dan setengah bagian atas. Algoritma kemudian memeriksa elemen tengah dari data dan membandingkannya dengan elemen yang dicari.

Baca juga :   Perkembangan Jaringan Komputer

Jika elemen tengah sama dengan elemen yang dicari, pencarian berakhir dan elemen ditemukan. Jika elemen tengah lebih besar dari elemen yang dicari, algoritma ini hanya akan mencari pada setengah bagian bawah data.

Sebaliknya, jika elemen tengah lebih kecil dari elemen yang dicari, pencarian akan dilanjutkan pada setengah bagian atas data. Proses ini berlanjut hingga elemen ditemukan atau data telah habis dan elemen tidak ditemukan.

Keuntungan Binary Search

Adapun keuntungan dalam menggunakan algoritma ini antara lain:

1. Pencarian Efisien pada Data Terurut

Salah satu keuntungan utama adalah efisiensinya dalam mencari data terurut. Karena data dibagi dua setiap langkahnya, algoritma ini dapat dengan cepat menyempitkan daerah pencarian hingga elemen yang dicari ditemukan. Dalam data yang sangat besar, metode ini mengurangi jumlah langkah yang diperlukan secara signifikan dibandingkan dengan metode pencarian lainnya, seperti linear search.

2. Analisis Kompleksitas Waktu

Analisis kompleksitas waktu adalah O(log n), di mana “n” adalah jumlah elemen dalam data. Dengan demikian, bahkan dalam data yang sangat besar, waktu yang dibutuhkan untuk menyelesaikan pencarian dengan algoritma ini masih tetap terkendali dan efisien.

Keterbatasan Binary Search

Berikut merupakan keterbatasan yang dimiliki oleh algoritma ini, antara lain:

1. Berlaku Hanya untuk Data Terurut

Salah satu keterbatasannya adalah membutuhkan data yang telah diurutkan sebelumnya. Jika data tidak terurut, kita harus melakukan pengurutan terlebih dahulu sebelum menggunakan algoritma ini. Proses pengurutan ini dapat menjadi mahal dalam hal waktu dan sumber daya komputasi.

2. Membutuhkan Memori Tambahan

Selain itu, implementasi algoritma ini memerlukan penambahan variabel tambahan untuk melacak indeks batas atas dan batas bawah data. Meskipun overhead memori ini relatif kecil dibandingkan dengan ukuran data yang besar, ini tetap menjadi pertimbangan dalam beberapa kasus penggunaan dengan keterbatasan memori.

Baca juga :   Adware Adalah: Pengertian, Dampak, Jenis dan Cara Kerja

Contoh Penggunaan Binary Search

Berikut ini contoh penggunakan algoritma ini, sebagai berikut:

1. Mencari Elemen dalam Array Terurut

Salah satu contoh penggunaan binary search adalah untuk mencari elemen tertentu dalam array yang telah diurutkan. Kita dapat dengan cepat menemukan elemen ini dengan menggunakan algoritma ini daripada mencari satu per satu menggunakan linear search.

2. Implementasi Auto-saran dalam Pencarian

Algoritma ini juga dapat digunakan dalam implementasi fitur auto-saran (auto-suggestion) dalam mesin pencarian atau aplikasi lain. Ketika pengguna mengetikkan query pencarian, aplikasi dapat menggunakan algoritma ini untuk mencari kemungkinan saran atau hasil yang relevan dengan cepat.

3. Penggunaan Binary Search dalam Searching Web

Algoritma ini menjadi kunci dalam mengoptimalkan mesin pencarian seperti Google. Ketika kamu mencari sesuatu di mesin pencari, algoritma ini bekerja di balik layar untuk menemukan dan menampilkan hasil yang relevan dengan cepat.

4. Penggunaan Binary Search dalam Aplikasi Pengelolaan Data

Banyak aplikasi bisnis yang menggunakan algoritma ini dalam pengelolaan data. Misalnya, dalam sistem manajemen stok, algoritma ini membantu mencari item tertentu dengan cepat berdasarkan kategori atau nomor referensi.

Perbandingan Binary Search dengan Metode Pencarian Lain

Sebelum kamu menggunakan algoritma ini, kamu harus tau perbandingan algoritma ini dengan algoritma yang lain.

1. Linear Search vs Binary Search

Perbandingan antara Linear Search dan Binary Search menunjukkan perbedaan yang mencolok dalam kinerja keduanya. Linear Search melakukan pencarian data satu per satu, sehingga memiliki kompleksitas waktu O(n) dalam kasus terburuk. Sementara itu, Binary Search memiliki kompleksitas waktu O(log n), yang jauh lebih efisien daripada Linear Search.

2. Binary Search vs Ternary Search

Ternary Search adalah variasi lain dari algoritma pencarian yang mengurangi rentang pencarian menjadi sepertiga pada setiap langkahnya. Meskipun Ternary Search juga efisien, Binary Search tetap lebih cepat dan lebih banyak digunakan dalam berbagai aplikasi.

Baca juga :   SPSS Adalah: Pengertian, Cara Kerja, Fungsi dan Kelebihan

Implementasi Binary Search dalam Bahasa Pemrograman C++ PHP dan JavaScript

Berikut adalah implementasi algoritma ini dalam bahasa pemrograman C++, Python, PHP, dan JavaScript:

Implementasi dalam C++

#include <iostream>
using namespace std;

int binarySearch(int arr[], int left, int right, int target) {
    while (left <= right) {
        int mid = left + (right - left) / 2;

        if (arr[mid] == target)
            return mid;
        else if (arr[mid] < target)
            left = mid + 1;
        else
            right = mid - 1;
    }
    return -1;
}

int main() {
    int arr[] = {2, 4, 6, 8, 10, 12, 14, 16};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 10;
    int result = binarySearch(arr, 0, n - 1, target);

    if (result != -1)
        cout << "Elemen ditemukan pada indeks ke-" << result << endl;
    else
        cout << "Elemen tidak ditemukan dalam array." << endl;

    return 0;
}

Implementasi dalam PHP

function binarySearch($arr, $left, $right, $target) {
    while ($left <= $right) {
        $mid = $left + floor(($right - $left) / 2);

        if ($arr[$mid] == $target)
            return $mid;
        else if ($arr[$mid] < $target)
            $left = $mid + 1;
        else
            $right = $mid - 1;
    }
    return -1;
}

$arr = array(2, 4, 6, 8, 10, 12, 14, 16);
$target = 10;
$result = binarySearch($arr, 0, count($arr) - 1, $target);

if ($result != -1)
    echo "Elemen ditemukan pada indeks ke-" . $result . PHP_EOL;
else
    echo "Elemen tidak ditemukan dalam array." . PHP_EOL;

Implementasi dalam JavaScript

function binarySearch(arr, left, right, target) {
    while (left <= right) {
        let mid = Math.floor((left + right) / 2);

        if (arr[mid] === target)
            return mid;
        else if (arr[mid] < target)
            left = mid + 1;
        else
            right = mid - 1;
    }
    return -1;
}

let arr = [2, 4, 6, 8, 10, 12, 14, 16];
let target = 10;
let result = binarySearch(arr, 0, arr.length - 1, target);

if (result !== -1)
    console.log(`Elemen ditemukan pada indeks ke-${result}`);
else
    console.log("Elemen tidak ditemukan dalam array.");

Kesimpulan

Pada pembelajaran kita di atas dapat kita simpulkan bahwa Binary Search adalah algoritma pencarian yang efisien dan bermanfaat untuk mencari elemen tertentu dalam data yang sudah terurut. Dalam konteks kehidupan sehari-hari, algoritma ini dapat diterapkan dalam berbagai situasi. Penting untuk memahami keuntungan dan kelemahan dari algoritma ini dan memilih metode pencarian yang tepat sesuai dengan jenis data dan kebutuhan.

Untuk mengoptimalkan penggunaan algoritma ini, pastikan data selalu dalam keadaan terurut dan penerapan algoritma yang tepat sesuai dengan struktur data yang digunakan.

Artikel ini merupakan bagian seri artikel Programming dari KantinIT.com dan jika ada ide topik yang mau kami bahas silahkan komen di bawah ya..