#include <iostream>
using namespace std;
int binarySearch(int arr[], int size, int target) {
int low = 0;
int high = size - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
// Show current low, mid, and high
cout << "Low: " << low << ", Mid: " << mid << ", High: " << high << endl;
if (arr[mid] == target) {
return mid; // Target found
}
else if (arr[mid] < target) {
low = mid + 1; // Search right half
}
else {
high = mid - 1; // Search left half
}
}
return -1; // Target not found
}
int main() {
int arr[] = {2, 4, 7, 10, 15, 20, 25};
int size = sizeof(arr) / sizeof(arr[0]);
int target;
cout << "Enter the number to search: ";
cin >> target;
int result = binarySearch(arr, size, target);
if (result != -1) {
cout << "Element found at index: " << result << endl;
}
else {
cout << "Element not found." << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGJpbmFyeVNlYXJjaChpbnQgYXJyW10sIGludCBzaXplLCBpbnQgdGFyZ2V0KSB7CiAgICBpbnQgbG93ID0gMDsKICAgIGludCBoaWdoID0gc2l6ZSAtIDE7CgogICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7CiAgICAgICAgaW50IG1pZCA9IGxvdyArIChoaWdoIC0gbG93KSAvIDI7CgogICAgICAgIC8vIFNob3cgY3VycmVudCBsb3csIG1pZCwgYW5kIGhpZ2gKICAgICAgICBjb3V0IDw8ICJMb3c6ICIgPDwgbG93IDw8ICIsIE1pZDogIiA8PCBtaWQgPDwgIiwgSGlnaDogIiA8PCBoaWdoIDw8IGVuZGw7CgogICAgICAgIGlmIChhcnJbbWlkXSA9PSB0YXJnZXQpIHsKICAgICAgICAgICAgcmV0dXJuIG1pZDsgLy8gVGFyZ2V0IGZvdW5kCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGFyclttaWRdIDwgdGFyZ2V0KSB7CiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7IC8vIFNlYXJjaCByaWdodCBoYWxmCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBoaWdoID0gbWlkIC0gMTsgLy8gU2VhcmNoIGxlZnQgaGFsZgogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gLTE7IC8vIFRhcmdldCBub3QgZm91bmQKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgYXJyW10gPSB7MiwgNCwgNywgMTAsIDE1LCAyMCwgMjV9OwogICAgaW50IHNpemUgPSBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pOwogICAgaW50IHRhcmdldDsKCiAgICBjb3V0IDw8ICJFbnRlciB0aGUgbnVtYmVyIHRvIHNlYXJjaDogIjsKICAgIGNpbiA+PiB0YXJnZXQ7CgogICAgaW50IHJlc3VsdCA9IGJpbmFyeVNlYXJjaChhcnIsIHNpemUsIHRhcmdldCk7CgogICAgaWYgKHJlc3VsdCAhPSAtMSkgewogICAgICAgIGNvdXQgPDwgIkVsZW1lbnQgZm91bmQgYXQgaW5kZXg6ICIgPDwgcmVzdWx0IDw8IGVuZGw7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBjb3V0IDw8ICJFbGVtZW50IG5vdCBmb3VuZC4iIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K