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
- Mulai karo kabeh dhaptar sing diurutake.
- Temokake unsur tengah saka sawetara telusuran saiki.
- Bandingake unsur tengah karo nilai target.
- Yen unsur tengah padha karo nilai target, telusuran bakal sukses.
- Yen unsur tengah luwih gedhe tinimbang target, goleki ing sisih kiwa kiwa.
- Yen unsur tengah luwih cilik tinimbang target, goleki ing sisih tengen kisaran.
- 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}
- Mulai karo dhaptar kabeh.
- Unsur tengah: 56(posisi 4). Bandhingake karo 34.
- 56 luwih gedhe tinimbang 34. Telusuri ing sisih kiwa.
- Unsur tengah anyar: 23(posisi 1). Bandhingake karo 34.
- 23 luwih cilik tinimbang 34. Telusuri ing sisih tengen.
- Unsur tengah anyar: 45(posisi 3). Bandhingake karo 34.
- 45 luwih gedhe tinimbang 34. Telusuri ing sisih kiwa.
- 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.