Практикум по курсу "Алгоритмизация и программирование". Часть 1. Андрианова А.А - 56 стр.

UptoLike

В данном алгоритме существенную роль играет факт упорядоченности
массива. Итерация алгоритма поиска заключается в следующем.
Выбираем элемент, расположенный в середине массива. Если он
совпадает с искомым, то поиск прекращается. Если же этот элемент больше
искомого, то в силу упорядоченности массива продолжать поиск следует в
левой его половине, иначе – в правой половине массива.
Алгоритм бинарного поиска является эффективным, поскольку после
каждой итерации количество рассматриваемых элементов уменьшается вдвое.
Для определения границ сегмента поиска элемента создаются две
переменные: l левая граница сегмента поиска, r правая граница сегмента
поиска. На каждой из итераций цикла поиска одна из переменных l или r
меняет свое значение. Поиск заканчивается тогда, когда левая и правая
границы совпадут, т.е. в сегменте останется только один элемент. Если он
равен искомому, выводим его индекс, иначе делаем вывод о том, что такого
элемента в массиве нет.
Блок-схема решения задачи 7 показана на Рис.4.13.
Код программы для задачи 7.
using System;
namespace Examples
{
class Program1
{
static void Main(string[] args)
{
int n;
int[] a;
Console.Write("Введите количество элементов массива:");
int.TryParse(Console.ReadLine(), out n);
if (n <= 0)
{
Console.WriteLine("Введите положительное размеры");
return;
}
a = new int[n];
if (a == null)
{
Console.WriteLine("Запрошено большое количество памяти.");
Console.WriteLine("Попробуйте ввести меньшее количество.");
return;
}
Console.WriteLine("Введите элементы массива:");
for (int i = 0; i < n; i++)
int.TryParse(Console.ReadLine(), out a[i]);
int k;
Console.WriteLine("Введите искомый элемент:");
int.TryParse(Console.ReadLine(), out k);
    В данном алгоритме существенную роль играет факт упорядоченности
массива. Итерация алгоритма поиска заключается в следующем.
    Выбираем элемент, расположенный в середине массива. Если он
совпадает с искомым, то поиск прекращается. Если же этот элемент больше
искомого, то в силу упорядоченности массива продолжать поиск следует в
левой его половине, иначе – в правой половине массива.
    Алгоритм бинарного поиска является эффективным, поскольку после
каждой итерации количество рассматриваемых элементов уменьшается вдвое.
Для определения границ сегмента поиска элемента создаются две
переменные: l – левая граница сегмента поиска, r – правая граница сегмента
поиска. На каждой из итераций цикла поиска одна из переменных l или r
меняет свое значение. Поиск заканчивается тогда, когда левая и правая
границы совпадут, т.е. в сегменте останется только один элемент. Если он
равен искомому, выводим его индекс, иначе делаем вывод о том, что такого
элемента в массиве нет.
    Блок-схема решения задачи 7 показана на Рис.4.13.

    Код программы для задачи 7.
    using System;

    namespace Examples
    {
        class Program1
        {
            static void Main(string[] args)
            {
                int n;
                int[] a;
                Console.Write("Введите количество элементов массива:");
                int.TryParse(Console.ReadLine(), out n);
                if (n <= 0)
                {
                    Console.WriteLine("Введите положительное размеры");
                    return;
                }
                a = new int[n];
                if (a == null)
                {
                    Console.WriteLine("Запрошено большое количество памяти.");
                    Console.WriteLine("Попробуйте ввести меньшее количество.");
                    return;
                }
                Console.WriteLine("Введите элементы массива:");
                for (int i = 0; i < n; i++)
                    int.TryParse(Console.ReadLine(), out a[i]);
                int k;
                Console.WriteLine("Введите искомый элемент:");
                int.TryParse(Console.ReadLine(), out k);