L-algoritmu ta' tfittxija binarja huwa mod aktar effiċjenti ta' tiftix għal element speċifiku f'lista magħżula. B'differenza għat-tfittxija lineari, li tiċċekkja l-elementi b'mod sekwenzjali, it-tfittxija binarja taqsam il-lista f'nofsijiet u tqabbel l-element fil-mira mal-element tan-nofs. Dan il-proċess jiġi ripetut sakemm jinstab l-element fil-mira jew il-firxa tat-tfittxija ssir vojta.
Kif taħdem
- Ibda bil-lista kollha magħżula.
- Sib l-element tan-nofs tal-firxa tat-tfittxija attwali.
- Qabbel l-element tan-nofs mal-valur fil-mira.
- Jekk l-element tan-nofs huwa ugwali għall-valur fil-mira, it-tfittxija tirnexxi.
- Jekk l-element tan-nofs huwa akbar mill-mira, fittex fin-nofs tax-xellug tal-firxa.
- Jekk l-element tan-nofs huwa iżgħar mill-mira, fittex fin-nofs tal-lemin tal-firxa.
- Irrepeti l-passi 2-6 sakemm jinstab l-element fil-mira jew il-firxa tat-tfittxija ssir vojta.
Eżempju
Ejja nikkunsidraw lista magħżula ta 'numri interi u trid issib in-numru 34 billi tuża tfittxija binarja.
Lista Magħquda: {12, 23, 34, 45, 56, 67, 89, 90}
- Ibda bil-lista kollha.
- Element tan-nofs: 56(pożizzjoni 4). Qabbel ma' 34.
- 56 huwa akbar minn 34. Fittex fin-nofs tax-xellug.
- Element tan-nofs ġdid: 23(pożizzjoni 1). Qabbel ma' 34.
- 23 huwa iżgħar minn 34. Fittex fin-nofs tal-lemin.
- Element tan-nofs ġdid: 45(pożizzjoni 3). Qabbel ma' 34.
- 45 huwa akbar minn 34. Fittex fin-nofs tax-xellug.
- Element tan-nofs ġdid: 34(pożizzjoni 2). Mira misjuba.
Eżempju Kodiċi f'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;
}
Fl-eżempju mogħti, il- binarySearch
funzjoni tintuża biex issib in-numru 34 f'lista magħżula ta 'numri interi. Ir-riżultat ikun il-pożizzjoni ta' 34 fil-lista(il-pożizzjonijiet jibdew minn 0) jew -1 jekk in-numru ma jinstabx.