Екілік іздеу (Бинарлық)
Қазақ Энциклопедиясы жобасынан алынған мәлімет
Сурет:Бинарлық іздеу.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>