İkili arama (binary search), sıralanmış bir dizide bir elemanın yerini bulmak için kullanılan bir algoritmadır. Bu algoritma, bir elemanın dizide olup olmadığını kontrol etmek için sıralanmış bir dizi kullanır ve aranan elemanın dizideki konumunu logaritmik bir zaman karmaşıklığıyla hesaplar.
Aşağıdaki C# kodu, bir sıralı dizi içinde bir elemanın var olup olmadığını bulmak için ikili arama algoritmasını uygulamaktadır:
csharp
using System;
public static class BinarySearch
{
public static int Search(int[] array, int value)
{
int left = 0;
int right = array.Length – 1;
while (left <= right)
{
int middle = (left + right) / 2;
if (array[middle] == value)
{
return middle;
}
else if (array[middle] < value)
{
left = middle + 1;
}
else
{
right = middle - 1;
}
}
return -1;
}
}
Bu örnek kod, array adlı bir sıralı tam sayı dizisi ve aranan value adlı bir tam sayı alır. İkili arama algoritması, başlangıçta dizinin solundan (left) ve sağından (right) olmak üzere iki indeksle başlar. Ardından, sol ve sağ indeksler arasında bir orta nokta (middle) hesaplanır.
Dizideki orta elemanın aranan elemana eşit olup olmadığı kontrol edilir. Eğer orta eleman, aranan elemana eşitse, algoritma işlemi sonlandırır ve orta elemanın dizindeki konumunu döndürür. Eğer orta eleman, aranan elemandan küçükse, arama işlemi orta elemandan sonraki elemanlara yönlendirilir. Eğer orta eleman, aranan elemandan büyükse, arama işlemi orta elemandan önceki elemanlara yönlendirilir.
Algoritma, sol ve sağ indeksler arasında aranan eleman bulunana kadar bu işlemi tekrarlar. Eğer aranan eleman dizide yoksa, -1 değeri döndürülür.
Bu şekilde, ikili arama algoritması kullanarak bir sıralı dizi içinde bir elemanın var olup olmadığını bulabilirsiniz.