İkili Arama Algoritması
Aug 10,2008 00:00 by RubeNiS
Bu algoritma sıralnmış veriler üzerinde istenilen elmanı bulma yöntemidir. Bu algoritmaya göre arama işlemi dizinin ortasındaki elman ile aranılan elemanın karşılaştırlması şeklinde yapılır. Bu karşılaştırma işleminde 3 durum sözkonusudur.
Birinci durum : Aranılan eleman dizinin ortasındaki elemandan büyüktür. O zaman dizinin ortasını başlangıç noktası seçerek dizinin tekrar ortasındaki elemanı bulmaya devam ederiz.
İkinci durum : Aranılan eleman dizinin ortasındaki elemandan küçüktür. O zaman dizinin ortasını bitiş noktası seçerek dizinin tekrar ortasındaki elemanı bulmaya devam ederiz.
Üçüncü durum : Aranılan elaman dizideki elemana eşittir. O zaman istenilen eleman bulunmuştur. Aramayı keseriz.
Algoritmayı şu şekilde verebiliriz ;

ikili_arama(aranan)
{
bas=1
son=dizinin_boyutu
Do while bas<=son
orta=(bas+son)/2
If aranan=dizi(orta) Then
'işlem başarılı
return orta
Elseif aranan %lt dizi(orta)
son=orta
Else
bas=orta
Endif
Loop
return 0
' eger fonksiyondan 0 döner ise eleman bulunamamıştır.
}


Şimdi bu algoritmayı Visual basic'de gerçekleştirelim. Bir önceki algoritmada anlattığımız programı geliştirerek devam edelim. Form üzerine bir buton daha yerleştiriniz. Butonun başlığını arama olarak değiştiriniz. Bu butonun click event'ine aşağıdaki kodu giriniz.


Private Sub Command3_Click()
Dim bas, son, aranan As Integer
bas = 1
son = p
aranan = Val(InputBox("Aranan elemanı giriniz ...", "Arama"))
Do While bas < son
orta = (bas + son) / 2
If aranan = dizi(orta) Then
    Print
         bas = orta - Int(orta)
         If bas < 0.5 Then
          orta = Int(orta)
         Else
          orta = Int(orta) + 1
         End If
    
    Print "Aranan eleman "; orta; " sırada bulundu"
    Exit Sub
    ElseIf aranan < dizi(orta) Then
    son = orta
Else
    bas = orta
End If
Loop
    Print
    Print "Aranan elaman bulunamadı."
End Sub