C# Алгоритмы поиска
Формулировка задачи:
Даны 2 массива целых чисел упорядоченных по убыванию своих значений. Выяснить, методом бинарного поиска, в каком из массивов элемент равный некоторому числу k имеет ниабольший номер
Тест1 - n=3, a[i]=1,2,4, n1=2, a[i]=4,9, k=4 --- Во 2
Тест2 - n=2, a[i]=2,4, n1=3, a[i]=4,5,9, k=5 --- Нет
Решение задачи: «C# Алгоритмы поиска»
textual
Листинг программы
using System;
namespace vlax
{
class Program
{
static void Main()
{
const int m = 8, n = 10;
Random rnd = new Random();
int[] a = new int[m];
int[] b = new int[n];
int i, ia, ib, x, y;
for (i = 0; i < m; i++)
{
a[i] = rnd.Next(15);
}
for (i = 0; i < n; i++)
{
b[i] = rnd.Next(15);
}
Array.Sort(a);
Array.Sort(b);
Array.Reverse(a);
Array.Reverse(b);
Console.WriteLine("Рандомные массивы, упорядоченные по убавынию:");
for (i = 0; i < m; i++)
{
Console.Write("{0,4}", a[i]);
}
Console.WriteLine();
for (i = 0; i < n; i++)
{
Console.Write("{0,4}", b[i]);
}
Console.WriteLine();
Console.Write("Введите искомое число k = ");
int k = Convert.ToInt32(Console.ReadLine());
Array.Reverse(a);
Array.Reverse(b);
ia=Array.BinarySearch(a, k);
ib=Array.BinarySearch(b, k);
x =(m-1) - ia;
y =(n-1) - ib;
if ((ia < 0) || (ib < 0))
{
Console.WriteLine("Число {0} не встречается одновременно в обоих массивах", k);
}
else if (y>x)
{
Console.WriteLine("Число {0} имеет наибольший номер #{1} во втором массиве", k,y);
}
else if (x>y)
{
Console.WriteLine("Число {0} имеет наибольший номер #{1} в первом массиве", k,x);
}
else if (x == y)
{
Console.WriteLine("Число {0} имеет одинаковые номера #{1} в обоих массивах", k,x);
}
Console.ReadLine();
}
}
}