İkili Arama Algoritması
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