2024-05-01 12:26:51 +04:00

43 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; // элемент не найден
}
}