İkili Arama (Binary Search)
İkili arama , sıralı dizilier için kullanılan bir algoritmadır. Algoritmanın amacı bu sıralı dizi içinde istenilen değeri bulmaktır. Çalışmaya başladığı anda dizinin ortasındaki eleman ile aranan sayı karşılaştırılır, eğer aranan değerden küçükse orta elemanın sağ tarafa doğru , eğer büyük ise orta elemanın sol tarafından devam edilir. Bu şekilde aranılan değer bulununcaya dek bu işlem devam eder. Küçük bir sayı dizisinde adım adım ilerleyecek olursal
1 - 3 - 5 - 7 - 9 - 11 - 13 aranan değer 13 olsun. ilk olarak ortaki eleman olan 7 ele alınır. 13 den küçük olduğu için sağa doğru ilerleme yapılır
9 - 11 - 13 bu sefer ortadaki eleman ile karşılaştırdığımızda aranan değerden küçük olduğu için . sağa doğru ilerleriz.
13 elimizdeki yeni bölümdür. 13 ile karşılaştırdığımızda da aradığımız değeri 3. adımda bulmuş olduk.
Örnek uygulama :
| |
int dizi[7] = {1, 3, 5, 7, 9, 11, 13}; int arananDeger = 13; int baslangic = 0; int bitis = 6; int i;
while ( baslangic != bitis ) { i = ( baslangic + bitis )/2; if (dizi[i] == arananDeger ) break; else if (dizi[i] > arananDeger ) bitis = i; else baslangic = i; i++; } |
|