Algoritma Panelusuran Biner (Binary Search) ing C++- Panjelasan, Tuladha, lan Kode

Algoritma telusuran binar minangka cara sing luwih efisien kanggo nggoleki unsur tartamtu ing dhaptar sing diurutake. Ora kaya telusuran linear, sing mriksa unsur-unsur kanthi urut, telusuran binar mbagi dhaptar dadi setengah lan mbandhingake unsur target karo unsur tengah. Proses iki diulang nganti unsur target ditemokake utawa sawetara telusuran dadi kosong.

Cara Kerjane

  1. Mulai karo kabeh dhaptar sing diurutake.
  2. Temokake unsur tengah saka sawetara telusuran saiki.
  3. Bandingake unsur tengah karo nilai target.
  4. Yen unsur tengah padha karo nilai target, telusuran bakal sukses.
  5. Yen unsur tengah luwih gedhe tinimbang target, goleki ing sisih kiwa kiwa.
  6. Yen unsur tengah luwih cilik tinimbang target, goleki ing sisih tengen kisaran.
  7. Baleni langkah 2-6 nganti unsur target ditemokake utawa sawetara telusuran dadi kosong.

Tuladha

Ayo dipikirake dhaptar integer sing diurutake lan pengin nemokake nomer 34 nggunakake telusuran binar.

Dhaptar sing diurut: {12, 23, 34, 45, 56, 67, 89, 90}

  1. Mulai karo dhaptar kabeh.
  2. Unsur tengah: 56(posisi 4). Bandhingake karo 34.
  3. 56 luwih gedhe tinimbang 34. Telusuri ing sisih kiwa.
  4. Unsur tengah anyar: 23(posisi 1). Bandhingake karo 34.
  5. 23 luwih cilik tinimbang 34. Telusuri ing sisih tengen.
  6. Unsur tengah anyar: 45(posisi 3). Bandhingake karo 34.
  7. 45 luwih gedhe tinimbang 34. Telusuri ing sisih kiwa.
  8. Unsur tengah anyar: 34(posisi 2). Target ditemokake.

Tuladha Kode ing C++

#include <iostream>  
#include <vector>  
  
int binarySearch(const std::vector<int>& arr, int target) {  
    int left = 0;  
    int right = arr.size()- 1;  
  
    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() {  
    std::vector<int> numbers = {12, 23, 34, 45, 56, 67, 89, 90};  
    int target = 34;  
  
    int result = binarySearch(numbers, target);  
  
    if(result != -1) {  
        std::cout << "Element " << target << " found at position " << result << std::endl;  
    } else {  
        std::cout << "Element " << target << " not found in the array" << std::endl;  
    }  
  
    return 0;  
}  

Ing conto sing diwenehake, binarySearch fungsi kasebut digunakake kanggo nemokake nomer 34 ing dhaptar wilangan sing diurutake. Asil bakal posisi 34 ing dhaftar(posisi miwiti saka 0) utawa -1 yen nomer ora ketemu.