using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Alg; class Program // O(log(n)) { static void Main() { int[] arr = { 2, 3, 4, 10, 40 };//Инициализация массива arr с элементами 2, 3, 4, 10, 40. int x = 10;//Определение переменной x, которая равна искомому элементу. int result = BinarySearch(arr, x);//Вызов метода BinarySearch для поиска элемента x в массиве arr. if (result == -1)//Проверка результата поиска и вывод соответствующего сообщения. Console.WriteLine("Элемент не найден"); else Console.WriteLine("Элемент найден в индексе: " + result); } static int BinarySearch(int[] arr, int x)//Объявление метода BinarySearch, который принимает массив arr и искомый элемент x. { int left = 0;//Инициализация переменной left, которая указывает на начальный индекс массива. int right = arr.Length - 1;//Инициализация переменной right, которая указывает на конечный индекс массива. while (left <= right)// Начало цикла, который выполняется, пока левая граница не превысит правую. { int mid = left + (right - left) / 2;//Вычисление среднего индекса mid для деления массива на две части. if (arr[mid] == x)//Проверка, является ли элемент в середине массива равным искомому элементу x. return mid; if (arr[mid] < x)//Если элемент в середине меньше x, сдвигаем левую границу поиска. left = mid + 1; else right = mid - 1;//Иначе сдвигаем правую границу поиска. } return -1; // элемент не найден } }