Екілік іздеу (Бинарлық)
Екілік (Бинарлық) іздеу - Сұрыпталған массив элементтерінің классикалық алгоритмделініп ізделінуі. Яғни, х қатарының у берілген санын немесе бөлімін табу үшін, оны жақындаған сайын екіге бөліп отыру болып табылады.
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");
}
}
}
Дереккөздер
өңдеуСыртқы сілтемелер
өңдеу Ортаққорда бұған қатысты медиа файлдар бар: C# |
Ортаққорда бұған қатысты медиа файлдар бар: Program |
Ортаққорда бұған қатысты медиа файлдар бар: Binary search algorithm |
- поиск
- іздеудің кодта берілген түрі Мұрағатталған 10 мамырдың 2018 жылы.
- search algorithm
- [1]
- [2]