Binary Search Algoritma mantığı
C sharp'da 10 tane elemanı olan bir diziyi buyukten kuçuğe sıralayalım ve içerisinden arama yapalım.
Sıralama ve aramayı, fonksiyon içerisinden çağıralım.
void Siralama_Arama()
{
int[] dizi; /*arama yapacağımız dizi ve aranan değer*/
int aranan = 0;
dizi = new int[10] { 66, 71, 53, 110, 4, 81, 89, 250, 116, 44 };/*10 elemanlı dizi */
int alt = 0, ust = 9, orta = (ust + alt) / 2;/*arama yapmak için gerekli
değişkenler*/
int i, j;
int min = 0, temp = 0;
Console.WriteLine("Dizinin sıralanmış hali: ");
for (i = 0; i < dizi.Length; i++)
{
min = i;
for (j = i + 1; j < dizi.Length; j++)
{
if (dizi[j] > dizi[min])
{
min = j;
}
}
/* bu 'for' döngüsünde dizi'yi büyükten küçüğe sıralıyoruz
arama yapmak için*/
temp = dizi[i];
dizi[i] = dizi[min];
dizi[min] = temp;
Console.WriteLine(dizi[i]);
}
/* Aranacak diziyi kullanıcıdan alıyoruz */
Console.WriteLine("Aranacak diziyi giriniz: ");
aranan = Convert.ToInt32(Console.ReadLine());
/*Binary Search algoritmasıyla, dizi içind arama yapıyoruz */
while (alt <= ust)
{
if (aranan == dizi[orta])
{
/* Değer bulunduysa, bulundu deyip dizideki sırasını
ekrana yazdırıyoruz */
Console.WriteLine("Bulundu. Sırası: " + (orta + 1));
break;
}
if (aranan > dizi[orta])
{
ust = orta - 1;
orta = (ust + alt) / 2;
}
if (aranan < dizi[orta])
{
alt = orta + 1;
orta = (ust + alt) / 2;
}
}//while loop
/* Değer bulunamadıysa ekrana hata mesajı yazdırıyoruz */
if (aranan != dizi[orta])
{
Console.WriteLine("Dizi Bulunamadı !");
}
}//fonksiyon
Fonksiyonu Main içerisinde çağıralım....
Çıktısı