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

Қазақстан Энциклопедиясы жобасынан алынған мәлімет

Сурет:Бинарлық іздеу.gif
Екілік кодта Бинарлық іздеу формасы

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


C#-та берілген мысал

<source lang="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");
       }
   }

} </source>

Дереккөздер

Үлгі:Дереккөздер

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

Үлгі:Commons Үлгі:Commons Үлгі:Commons