#include <iostream>
#include<ctime>
using namespace std;
// функція алгоритма бінарного пошуку
int Search_Binary(int arr[], int left, int right, int key) {
int midd = 0;
while (1) {
midd = (left + right) / 2;
if (key < arr[midd])// якщо шукане менше значення у комірці
right = midd - 1;// зміщення правої межі пошуку
else // якщо шукане більше значення у комірці
if (key > arr[midd])
left = midd + 1; // зміщння лівої межі пошуку
else // інакше (значення дорівнює)
return midd; // функція повертає індекс комірки
if (left > right) //якщо межі зімкнулися
return -1;
}
}
//упорядкування масиву для бінарного пошуку
void sort_b(int arr[], int n) {
int i, j, imin, tmp;
for (i = 0; i < n - 1;i++) {
imin = i;
for (j = i + 1; j < n; j++)
if (arr[imin]>arr[j]) imin = j;
tmp = arr[i];
arr[i] = arr[imin];
arr[imin] = tmp;
}
}
int main()
{
const int SIZE = 50;
int array[SIZE] = {};
int key = 0;
int index = 0; // індекс комірки з шуканим значенням
cout<<"Сформувати масив"<<endl;
for ( i = 0; i < SIZE; i+=10){
for ( j = i; j < i+10;j++)
{ array[i] =rand()%100;
cout << array[j] << " ";}
cout << endl;
}
cout << endl;
cout << "Відсортувати масив"<<endl;
sort_b(array, SIZE);
for ( i = 0; i < SIZE; i+=10) {
for ( j = i; j < i+10;j++)
cout << array[j] << " ";
cout << endl;
}
cout << "\n\n Введіть деяке число: ";
cin >> key;
index = Search_Binary(array, 0, SIZE, key);
if (index >= 0)
cout << "Вказане число знаходиться у комірці з індексом: " << index << "\n\n";
else
cout << "У масиві немає такого числа!\n\n";
return 0;
}