using System.Security.Cryptography;
int[] a = new int[8] { 101, 145, 178, 203, 256, 300, 355, 400 };
int sravneni = 0;
Console.Write("Введите код товара: ");
int key = Convert.ToInt32(Console.ReadLine());
int LinearSearch(int[] a, int key)
{
for (int i = 0; i < a.Length; i++)
{
sravneni++;
if (a[i] == key) return i; // нашли — вернуть индекс
}
return -1; // не найдено
}
int BinarySearch(int[] a, int key)
{
int low = 0, high = a.Length - 1;
while (low <= high)
{
sravneni++;
int mid = (low + high) / 2;
if (a[mid] == key) return mid; // нашли
if (a[mid] < key) low = mid + 1; // искомое правее
else high = mid - 1; // искомое левее
}
return -1; // не найдено
}
int numIndex = LinearSearch(a, key);
Console.WriteLine($"Линейный поиск: найдено на позиции {numIndex}");
Console.WriteLine($"Сравнений: {sravneni}");
sravneni = 0;
numIndex = BinarySearch(a, key);
Console.WriteLine($"Бинарный поиск: найдено на позиции {numIndex}");
Console.WriteLine($"Сравнений: {sravneni}");
Console.WriteLine("(Если индекс равен -1 - число отсутствует в массиве)");
int[] n = new int[3] { 1000, 100000, 1000000 };
for (int i = 0; i < n.Length; i++)
{
int[] data = new int[n[i]];
var rnd = new Random();
for (int j = 0; j < n[i]; j++)
data[i] = rnd.Next(0, 1000);
LinearSearch(data, key);
Console.WriteLine($"--- Результаты замеров ({n[i]} элементов ) ---");
Console.WriteLine($"Сравнений: {sravneni}");
BinarySearch(data, key);
Console.WriteLine($"--- Результаты замеров ({n[i]} элементов) ---");
Console.WriteLine($"Сравнений: {sravneni}");
}