43 lines
2.3 KiB
C#
Raw Normal View History

2024-05-01 12:26:51 +04:00
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; // элемент не найден
}
}