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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д