#include <stdio.h>
#include <iostream>
#include <iomanip>
using namespace std;
int binarySearch(const int [], int, int, int, int ); // function prototype
int main()
{
const int arraySize = 10;
int arr[ arraySize ];
int key;
for( int i = 0; i < arraySize; i++) // generate data for array
arr[i] = 2*i;
cout << "The array being searched is: " << endl;
for (int j = 0; j<arraySize; j++) // print subscript index of the array
{
cout << setw(5) << j << " ";
}
cout << endl;
for (int z = 0; z<arraySize; z++) // print elements of the array below index
{
cout << setw(5) << arr[z] << " ";
}
cout << "\n" <<"Enter value you want to search in array " << endl;
cin >> key;
int result = binarySearch(arr, key, 0, arraySize, arraySize); // function call
if (result == 1) // print result of search
cout << "Key is found " << endl;
else
cout << "Key not found " << endl;
return 0;
} // end main function
int binarySearch(const int a[], int searchKey, int low, int high, int length)
{
int middle;
while (low <= high){
middle = (low + high) / 2;
if (searchKey == a[middle]) // search value found in the array, we have a match
{
return 1;
break;
}
else
{
if( searchKey < a[middle] ) // if search value less than middle element
high = middle - 1; // set a new high element
else
low = middle + 1; // otherwise search high end of the array
}
}
return -1;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGJpbmFyeVNlYXJjaChjb25zdCBpbnQgW10sIGludCwgaW50LCBpbnQsIGludCApOyAvLyBmdW5jdGlvbiBwcm90b3R5cGUKCmludCBtYWluKCkKewogICAgY29uc3QgaW50IGFycmF5U2l6ZSA9IDEwOwogICAgaW50IGFyclsgYXJyYXlTaXplIF07CiAgICBpbnQga2V5OwoKICAgIGZvciggaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyBpKyspICAvLyBnZW5lcmF0ZSBkYXRhIGZvciBhcnJheQogICAgICAgYXJyW2ldID0gMippOwoKICAgIGNvdXQgPDwgIlRoZSBhcnJheSBiZWluZyBzZWFyY2hlZCBpczogIiA8PCBlbmRsOwoKICAgIGZvciAoaW50IGogPSAwOyBqPGFycmF5U2l6ZTsgaisrKSAgLy8gcHJpbnQgc3Vic2NyaXB0IGluZGV4IG9mIHRoZSBhcnJheQogICAgewogICAgY291dCA8PCBzZXR3KDUpIDw8IGogPDwgIiAiOwogICAgfQoKICAgIGNvdXQgPDwgZW5kbDsKCiAgICBmb3IgKGludCB6ID0gMDsgejxhcnJheVNpemU7IHorKykgLy8gcHJpbnQgZWxlbWVudHMgb2YgdGhlIGFycmF5IGJlbG93ICAgICBpbmRleAogICAgewogICAgIGNvdXQgPDwgc2V0dyg1KSA8PCBhcnJbel0gPDwgIiAiOwogICAgfQoKICAgIGNvdXQgPDwgIlxuIiA8PCJFbnRlciB2YWx1ZSB5b3Ugd2FudCB0byBzZWFyY2ggaW4gYXJyYXkgIiA8PCBlbmRsOwogICAgY2luID4+IGtleTsKCiAgICBpbnQgcmVzdWx0ID0gYmluYXJ5U2VhcmNoKGFyciwga2V5LCAwLCBhcnJheVNpemUsIGFycmF5U2l6ZSk7IC8vIGZ1bmN0aW9uIGNhbGwKCiAgICBpZiAocmVzdWx0ID09IDEpICAgICAgICAgICAgICAgICAgLy8gcHJpbnQgcmVzdWx0IG9mIHNlYXJjaAogICAgY291dCA8PCAiS2V5IGlzIGZvdW5kICIgPDwgZW5kbDsKICAgIGVsc2UKICAgIGNvdXQgPDwgIktleSBub3QgZm91bmQgIiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9IC8vIGVuZCBtYWluIGZ1bmN0aW9uCgppbnQgYmluYXJ5U2VhcmNoKGNvbnN0IGludCBhW10sIGludCBzZWFyY2hLZXksIGludCBsb3csIGludCBoaWdoLCBpbnQgbGVuZ3RoKQp7CiAgICBpbnQgbWlkZGxlOwoKICAgIHdoaWxlIChsb3cgPD0gaGlnaCl7CgogICAgbWlkZGxlID0gKGxvdyArIGhpZ2gpIC8gMjsKCiAgICBpZiAoc2VhcmNoS2V5ID09IGFbbWlkZGxlXSkgLy8gc2VhcmNoIHZhbHVlIGZvdW5kIGluIHRoZSBhcnJheSwgd2UgaGF2ZSBhIG1hdGNoCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgZWxzZQogICAgewogICAgICAgIGlmKCBzZWFyY2hLZXkgPCBhW21pZGRsZV0gKSAgLy8gaWYgc2VhcmNoIHZhbHVlIGxlc3MgdGhhbiBtaWRkbGUgZWxlbWVudAogICAgICAgICAgICBoaWdoID0gbWlkZGxlIC0gMTsgICAgICAvLyBzZXQgYSBuZXcgaGlnaCBlbGVtZW50CiAgICAgICAgZWxzZQogICAgICAgICAgICBsb3cgPSBtaWRkbGUgKyAxOyAgICAgICAvLyBvdGhlcndpc2Ugc2VhcmNoIGhpZ2ggZW5kIG9mIHRoZSBhcnJheQogICAgfQogICAgfQpyZXR1cm4gLTE7Cn0=