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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы