lostyazilim
tr.link

Csharp ile Binary Search

2 Mesajlar 2.114 Okunma
lstbozum
tr.link

ArifErdem ArifErdem WM Aracı Kullanıcı
  • Üyelik 23.11.2010
  • Yaş/Cinsiyet 35 / E
  • Meslek Memur
  • Konum İstanbul Anadolu
  • Ad Soyad A** E**
  • Mesajlar 53
  • Beğeniler 21 / 20
  • Ticaret 0, (%0)
Binary Search (İkili arama algoritması): Sıralanmış bir dizide, aranan değeri bulmamıza yarayan bir algoritmadır. 'Sıralanmamış' bir dizide, Binary Search yapmamız mümkün değildir.

Binary Search Algoritma mantığı


C sharp'da 10 tane elemanı olan bir diziyi buyukten kuçuğe sıralayalım ve içerisinden arama yapalım.

Sıralama ve aramayı, fonksiyon içerisinden çağıralım.



void Siralama_Arama()
{


int[] dizi; /*arama yapacağımız dizi ve aranan değer*/
int aranan = 0;


dizi = new int[10] { 66, 71, 53, 110, 4, 81, 89, 250, 116, 44 };/*10 elemanlı dizi */

int alt = 0, ust = 9, orta = (ust + alt) / 2;/*arama yapmak için gerekli
değişkenler*/

int i, j;
int min = 0, temp = 0;

Console.WriteLine("Dizinin sıralanmış hali: ");
for (i = 0; i < dizi.Length; i++)
{
min = i;

for (j = i + 1; j < dizi.Length; j++)
{
if (dizi[j] > dizi[min])
{
min = j;
}

}

/* bu 'for' döngüsünde dizi'yi büyükten küçüğe sıralıyoruz
arama yapmak için*/


temp = dizi[i];
dizi[i] = dizi[min];
dizi[min] = temp;
Console.WriteLine(dizi[i]);

}


/* Aranacak diziyi kullanıcıdan alıyoruz */

Console.WriteLine("Aranacak diziyi giriniz: ");
aranan = Convert.ToInt32(Console.ReadLine());


/*Binary Search algoritmasıyla, dizi içind arama yapıyoruz */

while (alt <= ust)
{
if (aranan == dizi[orta])
{
/* Değer bulunduysa, bulundu deyip dizideki sırasını
ekrana yazdırıyoruz */

Console.WriteLine("Bulundu. Sırası: " + (orta + 1));
break;
}

if (aranan > dizi[orta])
{
ust = orta - 1;
orta = (ust + alt) / 2;
}

if (aranan < dizi[orta])
{
alt = orta + 1;
orta = (ust + alt) / 2;
}




}//while loop

/* Değer bulunamadıysa ekrana hata mesajı yazdırıyoruz */


if (aranan != dizi[orta])
{
Console.WriteLine("Dizi Bulunamadı !");

}



}//fonksiyon





Fonksiyonu Main içerisinde çağıralım....





Çıktısı
 

 

wmaraci
reklam

crazyvelet crazyvelet WM Aracı Kullanıcı
  • Üyelik 26.11.2010
  • Yaş/Cinsiyet 44 / E
  • Meslek
  • Konum
  • Ad Soyad A** V**
  • Mesajlar 129
  • Beğeniler 4 / 6
  • Ticaret 0, (%0)
Teşekkürler :) Seneye işime yarayabilir :) +rep
 

 

Ne mutlu Türk'üm diyene!
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al