Binary Search (İkili Arama) algoritması, (küçükten büyüğe) sıralı bir dizi içinde arama yapmayı sağlayan algoritmadır.

Çalışma Mantığı

Her adımda aranan değerin dizinin orta değişkenine eşit olup olmadığı kontrol ettirilir. Eşit değilse bu sefer aranan değerin orta değerden büyük mü küçük mü olduğuna bakılır. Büyükse başlangıç indexi orta değer’in bir fazlasına, küçükse bir eksiğine eşitlenir. Amaç, dizi sıralı olduğu için eğer aranan eleman ortadakinden büyükse, öncekilerden de büyük olacağından bir sonraki adımda kontrol ederken başlangıç ve bitiş index aralığını daraltmaktır.

Binary search algoritmasının örnek fonksiyonu aşağıdadır.

 

        public int IkiliArama(int arananSayi,int[] sayilar)
        {
            int baslangic = 0, bitis = sayilar.GetUpperBound(0), orta = baslangic + bitis / 2;
            while (baslangic <= bitis)
            {
                orta = (baslangic + bitis) / 2;
                if (sayilar[orta] > arananSayi)
                {
                    bitis = orta – 1;
                }
                else if (sayilar[orta] < arananSayi)
                {
                    baslangic = orta + 1;
                }
                else
                {
                    return orta;
                }
            }
            return -1;
        }