الگوریتم جستجوی باینری یا دودویی : تکنیکی است برای یافتن یک
مقدار عددی از میان مجموعهای از اعداد مرتب. این متد محدوده جستجو را در
هر مرحله به نصف کاهش میدهد، بنابراین هدف مورد نظر یا به زودی پیدا
میشود و یا مشخص میشود که مقدار مورد جستجو در فهرست وجود ندارد.
جستجوی دودویی فقط در آرایه های مرتب استفاده می شود.در این روش عنصر
مورد نظر با خانه وسط آرایه مقایسه می شود اگر با این خانه برابر بود جستجو
تمام می شود اگر عنصر مورد جستجو از خانه وسط بزرگتر بود جستجو در بخش
بالایی آرایه و در غیر این صورت جستجو در بخش پایینی آرایه انجام می
شود(فرض کرده ایم آرایه به صورت صعودی مرتب شده است) این رویه تا یافتن
عنصر مورد نظر یا بررسی کل خانه های آرایه ادامه می یابد. جستجوی دودویی
نمونهای از الگوریتمهای تقسیم و غلبه میباشد.
کد سی شارپ :
* در این کد ما فرض می کنیم آرایه ای که داریم مرتب شده هست.
سورس مرتب سازی حبابی با سی شارپ
using System;
using System.Text;
namespace Binary_Search_Cristiansoft
{
class Program
{
static void Main(string[] args)
{
int left=0,right=0,middle=0,key=0,f=0;
//آرایه
int[] array = {10,22,33,44,55,66,77,88,99,111};
// دریافت عدد برای جستجو در آرایه
Console.WriteLine("Enter a number for search : ");
key = int.Parse(Console.ReadLine());
// شروع عملیات جستجوی باینری
while(left <= right)
{
middle = (int) ((left + right)/2);
if(key == array[middle])
{
Console.WriteLine(Found !!!);
f = 1;
break;
}
if(key > array[middle])
{
left = middle + 1;
}
if(key < array[middle])
{
left = middle - 1;
}
}
if(f == 0)
{
Console.WriteLine("Sorry , Not Found!!!");
}
// پایان عملیات جستجوی باینری
Console.ReadKey();
}
}
}