Екілік іздеу (Бинарлық)

Екілік (Бинарлық) іздеу - Сұрыпталған массив элементтерінің классикалық алгоритмделініп ізделінуі. Яғни, х қатарының у берілген санын немесе бөлімін табу үшін, оны жақындаған сайын екіге бөліп отыру болып табылады.


 C#-та берілген мысал 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Массив элементтерінің санын енгізіңіз N = ");
            int razmer, X, a, b, m = -2, count;//razmer - массив элементтерінің саны;x - издеуге арналған массив элементі;
            a, b - іздеу аймағының шекарасы; m - массивтің шартты саны(-2 элемент болмаған жағдайда); 
            count - циклді өту счетчигі
            razmer = int.Parse(Console.ReadLine());
            int[] mas = new int[razmer + 1];
            Random rand = new Random();
            for (int i = 0; i < razmer; i++) 
            {
                mas[i] = rand.Next(100);
            }
            Array.Sort(mas); 
            string question;
            do
            {
                question = "y";
                count = 0;
                for (int i = 0; i < razmer; i++) 
                {
                    Console.Write("{0} ", mas[i]);
                }
                Console.WriteLine();
                Console.Write("Іздеуге арналған санды енгізіңіз X = ");
                X = int.Parse(Console.ReadLine());
                a = 0;
                b = razmer;
                while (a != b) 
                {
                    count++; 
                    m = (a + b) / 2; 
                    if (mas[m] == X) 
                    {
                        a = b;
                    }
                    else
                    {
                        if (mas[m] < X)
                        {
                            a = m + 1;  
                        }
                        else
                        {
                            b = m;
                        }
                        m = -2;//элемент табылмаған жағдайда
                    }
                }
                Console.WriteLine("Іздеуге арналған элемент X = {0} мына аймақта орналасқан m = {1}", X, m + 1);
                Console.WriteLine("Циклді өту реті {0}", count);
                Console.WriteLine("Іздеуді жалғастырамыз ба? (y/n)");
                question = Console.ReadLine();
                Console.Clear();
            } while (question == "y");
        }
    }
}
 Дереккөздер 

 Сыртқы сілтемелер 

 поиск
 іздеудің кодта берілген түрі 
 search algorithm



Санат:Математика
Санат:Ақпараттану