Проверьте реализацию бинарного поиска - C#
Формулировка задачи:
Проверьте , пожалуйста , реализацию бинарного поиска . Пока только учусь , может какие-то неточности есть ?
Заранее спасибо за ответ !
class Arr
{
// конструктор
private int[] _mass; //массив
public Arr(int[]mas)
{
if (mas.Length == 0) Console.WriteLine("Вы не задали массив элементов!");
else _mass = mas;
}
// вывод массива
public void ShowArr()
{
Console.WriteLine("Массив элементов:");
foreach (int t in _mass)
{
Console.Write(t+" ");
}
Console.WriteLine();
}
// функция сортировки
public void SortArr(int[] mas)
{
Array.Sort(mas);
}
// функция бинарного поиска
public int BinPoisk(int[] mas,int N)
{
// вызываем функцию ортировки
SortArr(mas);
//допустип,что массив упорядочен по возврастанию
int left = 0, right = N, mid;
// ввод ключа
int key = mas[0];
Console.WriteLine();
Console.WriteLine("Введите элемент для поиска:");
key = int.Parse(Console.ReadLine());
while (left <= right)
{
//ищем середину
mid = left + (right - left)/2;
if (key < mid)
{
right = mid - 1;
}
else if (key > mid)
{
left = mid + 1;
}
else return mid;
}
return -1;
}
}
class Proga
{
static void Main()
{
int[] m = new int[] {1,3,2,5,8,10,11,4,18,19,22,21};
// создаём объект
Arr ob1=new Arr(m);
// выводим элементы массива
ob1.ShowArr();
ob1.SortArr(m);
ob1.ShowArr();
int bin_poisk = ob1.BinPoisk(m,m.Length);
if (bin_poisk == -1)
{
Console.WriteLine("Искомый элемент не найден");
}
else Console.WriteLine("Элемент найден под номером " + bin_poisk);
}
}Решение задачи: «Проверьте реализацию бинарного поиска»
textual
Листинг программы
// функция сортировки
public void SortArr()
{
Array.Sort(_mass);
}