TurkProgrammers.NeT
Ana sayfa Ana Sayfa | Ana sayfanız yapın | Sık kullanılanlara ekle | Rss/Rdf Besleme| JavaScript
Bölümler
Arşiv
paz sa ça cu cum pa
1234
567891011
12131415161718
19202122232425
262728293031

Mailinizi ekleyin
Haberlere abone olun:

anket: Web Programcılığının Geleceğini nasıl görüyorsunuz
Web Programcılığının Geleceğini nasıl görüyorsunuz?
Önü Fazlası ile açık
ilerde yapacak web sitesi kalmayacak
Hazır sistemler işleri iyice bitirecek
Bugünden daha kötü olamaz
Anket sonuçları | Eski Anketler


email Arkadaşınızın maili | print Yazıcı versionu | comment Yanıtlar (0 Gönder)

İkili Arama Algoritması

by caner kuru on Ağustos 10,2008

image
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

137 Kere okundu

Bu makaleyi beyendinizmi ?

1 2 3 4 5 Rating: 5.00Rating: 5.00Rating: 5.00Rating: 5.00Rating: 5.00 (Toplam 5 Oylar)
comment Yanıtlar (0 Gönder)
Çok okunanlar
En Çok Yorumlananlar
Yazarlar