Gönderen Konu: Nesne Proğramlama Arama Algoritmaları  (Okunma sayısı 649 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı GameLear

  • Administrator
  • *
  • İleti: 277
  • Cinsiyet: Bay
  • Ondokuz Mayıs Üniversitesi
    • Profili Görüntüle
  • Akademik: Çarşamba Ticaret Borsası Meslek Yüksekokulu
  • Bölüm: Bilgisayar Proğramcılığı
Nesne Proğramlama Arama Algoritmaları
« : 18 Aralık 2015, 21:19:29 »
[h1]ARAMA ALGORİTMALARI;[/h1]

1.)DOGRUSAL ARAMA(LINEER SEARCH):
LİSTEDEKİ TÜM ELEMANLAR SIRASIYLA TARANIR ARANAN ELE MAN BULUNDUGUNDA ALGORTIMA
SONLANDIRILIR.ELEMAN SAYISI FAZLA OLAN DIZI VE YA LISTELERDE KULLANILMASI VERIM
SIZDIR LISTE ICERISINDE BULUNAN TUM ELAMANLARA TEK TEK BAKILARAK KARSILASTIRMA
ISLEMI YAPILDIGINDA  ELIMIZDE BULUNAN HAZIR LISTENIN SIRALI OLMASI GEREKLI DEGILDIR.
5-1-3-7-6-2
0.1.2.3.4.5. İNDİS

5-1-3-7-6-2

5-1-3-7-6-2
ConsoleApplication Kodları:
public static int dogrusalArama (int[] dizi, int aranan)
{
for (int i=0; i<dizi.Length; i++)
if (dizi== aranan)
return i;
return -1;
}
static void Main (string[]args)
{
int [] liste={5,1,3,7,6,2};
int aranan=2;
int indis = dogrusalArama (liste,aranan);
if (indis==-1)
Console.Write("eleman bulunamadı");
else
Console.Write("eleman indisi:{0}",indis);
Console.ReadKey(); 
}}}
-----------------------------------------------------------------------------------------------------------------------
2.)İKİLİ ARAMA(BİNARY SEARCH):
IKILI ARAMA ALGORITMASI SIRALI LISTELER UZERINDE CALISIR ARANAN ELEMAN DIZININ ORTASINDAKI ELEMAN ILE KARSILASTIRILIR
ORTAKI ELEMAN ILE ARANAN ELMAN BIRBIRINE ESITSE ALGORITMA SONLANDIRILIR.ESIT OLMADIGI DURUMLARDA ISE
1 ARANAN ELEMAN ARANAN ELEMANDAN KUCUKSE LISTENIN SOL TARAFI SAYILIR
2 ARANAN ELEMAN ORTAKI ELEMANDAN BUYUKSE LISTENIN SAG TARAFI DIKKATE ALINIR VE TEKRAR ORTAKI ELEMAN ILE KARSILASTIRMA
YAPILIR SONUC BULUNANA KADAR BU ISLEM DEVAM EDER.

LİSTE=2,5,6,8,10,15,17,18,20,25,30
ARANAN ELEMAN=25
2,5,6,8,10,[15],17,18,20,25,30
17,18,[20],25,30
[25],30

ConsoleApplication Kodları:

public static int ikiliArama (int[] dizi, int aranan)
{
int ilkIndis = 0;
int sonIndis=dizi.Length-1;
int orta;
while(ilkIndis<=sonIndis)
{
orta = (ilkIndis + sonIndis) / 2;
if (dizi [orta] > aranan )
{
sonIndis = orta-1;
}
else if (dizi[orta]<aranan)
{
ilkIndis=orta-1;
}
else
{
return orta;
}}
return-1;
}
static void Main(string[] args)
{
int [] liste={2,5,6,8,10,15,17,18,20,,25,30};
int aranan=25;
int indis=ikiliArama (liste,aranan) ;
if (indis==-1)
Console.Write("eleman bulunamadı");
else
Console.Write("elemanın indisi:{0}",indis);
Console.ReadKey();
}}}
-------------------------------------------------------------------------------------------
3.)ARA DEGER ARAMASI(INTERPALATİON SEARCH):
SIRALI LISTELERDE ARAMA YAPAN BİR ALGORTIMADIR ALGORITMA ASAGIDAKI FORMUL YARDIMIYLA ORTA NOKTAYI BULARAK
ARAMA ISLEMINI BASLATIR.
FORMÜL:ORTA=İLKINDIS+((ARANAN-A[İLKINDIS])*(SONİNDİS-İLKİNDİS))/(A[SONİNDİS]-A[İLKİNDİS])
AŞAGIDAKİ DİZİDE VERİLEN İNDİS NUMARALARI VE ARANAN SAYISAL DEGER BELIRTILMISDIR
DİZİ
  • =2 DİZİ [9]=30 OLMAK UZERE ORTA ELEMAN FORMULU ASAGIDAKI GIBI UYGULANIR VE YAKLASIK 6 DEGERI BULUNUR.

DİZİ ELEMANLARI 2,3.5.8.11.15.18.22.25.30
İNDİS NUMARALI  0,1,2,3,4,5,6,7,8,9
ARANAN=22 DİZİ
  • =2 DİZİ [9]=30

1.ADIM
ORTA=0+((22-2)*(9-0))/(30-2)
ORTA= 180/28=~6
2.ADIM
DİZİ[7]=22 DİZİ [9]=30
ORTA= 7+((22-22)*(9-7))/(30-22)
       0      2   /8
       ---0----
            ------0------
ORTA=7
DİZİNİN 6. İNDİSDEKİ SAYISAL DEGERİ ARANAN ELEMANLA KARSILASTIRILIR ARADIGIMIZ ELEMAN ILE UGUSUYORSA ARAMA SONLANDIRILIR.
ARANAN ELEMAN ORTALA ELEMANDAN DAHA BUYUKSEK ORTA ELEMANIN SAGINDAKI ELEMAN ILK INDIS OLARAK KABUL EDILIR ARANAN ELEMAN DAHA
KUCUKSE ORTA ELEMANIN SOLUNDAKI ELEMAN SON INDIS OLARAK KABUL EDILIR.VE FORMUL TEKRAR UYGULANIR.

ConsoleApplication Kodları:

public static int araDegerArama(int[] dizi, int aranan)
        {
            int ilkIndis = 0;
            int sonIndis = dizi.Length - 1;
            int orta;
            while (ilkIndis <= sonIndis)
            {
                orta = ilkIndis + ((aranan - dizi[ilkIndis]) * (sonIndis - ilkIndis)) / (dizi[sonIndis] - dizi[ilkIndis]);
                if ((orta >= dizi.Length) || (orta < 0))
                    return -1;
                if (dizi[orta] > aranan)
                {
                    sonIndis = orta - 1;
                }
                else if (dizi[orta] < aranan)
                {
                    ilkIndis = orta + 1;
                }
                else
                {
                    return orta;
                }
            }
            return -1;
        }
        static void Main(string[] args)
           {
           int [] liste={2,3,5,8,11,15,18,22,25,30};
               int aranan=22;
               int indis=araDegerArama (liste,aranan) ;
               if (indis==-1)
                   Console.Write("eleman bulunamadı");
               else
                   Console.Write("elemanın indisi:{0}",indis);
               Console.ReadKey();
           }
       }
    }
Not:Orjinal Metin Dosyası Ektedir Görebilmek İçin Giriş yapmalısınız veya üye olmalısınız.
« Son Düzenleme: 30 Aralık 2015, 20:46:35 Gönderen: GameLear »



Etiket:
 

Hızlı yanıt'ı kullanarak çabukça ileti gönderebilir, iletilerinizde gülümseme ve bbc kullanabilirsiniz.

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.
Kullanıcı Adı: E-Posta: