ebook img

Arama Algoritmalari PDF

19 Pages·2012·0.11 MB·Turkish
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Arama Algoritmalari

Arama Algoritmaları Doğrusal Arama ve Binary Arama Doğrusal Arama - Örnek • Dizi (Array) sayilistesi içerisindeki sayılar aşağıdaki gibidir: 17 23 5 11 2 29 3 • 11, verilen dizi içerisinde aranacaksa doğrusal arama algoritması 17, 23, 5, ve 11 sayılarını test eder. • 7, aranacak ise 17, 23, 5, 11, 2, 29, ve 3 sırası ile test edilir (ve aranan sayı bulunamaz!. ) Doğrusal Arama Algoritması • Algoritma: bulundu değişkenini yanlış olarak atayınız; pozisyon değişkenini –1 olarak atayınız; index değişkenini 0 olarak atayınız. wwhhiillee ((iinnddeexx << ddiizziiddeekkii eelleemmaann ssaayyııssıı)) vvee ((bbuulluunndduu ==== yyaannllıışş)) if (sayilistesi[index] == aranan sayı) bulundu = doğru pozisyon = index end if index değişkenine 1 ekle. end while return pozisyon Doğrusal arama foksiyonu – C++ kodu int Listeyiara(int list[], int elemansayisi, int aranansayi) { int index = 0; int pozisyon = -1; char bulundu = ‘Y’; wwhhiillee (( ((iinnddeexx << eelleemmaannssaayyiissii)) &&&& ((bbuulluunndduu!!==‘‘DD’’)) )) { if (list[index] == aranansayi) { bulundu = ‘D’; // aranansayının bulunduğunu gösterir pozisyon = index; // aranan sayının lokasyonunu tutar. } index++;// bir sonraki pozisyondaki elemanı araması için. } return pozisyon; // aranansayının lokasyonunu ana programa } // döner veya -1 olarak döner. Doğrusal Arama Algoritması • Avantajları I. Anlaşılması kolay bir algoritmadır. II. Uygulamak için dizinin sıralı olması gerekmez!.. • Dezavantajları I. Yavaştır. (çok elemanı olan diziler için) Eğer aranan sayı dizide mevcut değil ise tüm elemanların aranması gerekir, mevcut ise bulduğu yerde durur. Binary Arama Algoritması- Örnek • Dizi (Array) sayilistesi içerisindeki sayılar aşağıdaki gibidir: 2 3 5 11 17 23 29 • 11, elemanı aranıyorsa , 11 test edilir ve binary arama durur!.. • 7, elemanı aranıyorsa binary arama 11, 3, 5, değerlerini test edip durur. Binary Arama Algoritması ilkindex değerini 0 yap. sonindex değerini dizinin son elemanının pozisyon değerine eşitle. bulundu=‘Y’; pozisyon= -1. While ( (bulundu !=‘D’ ) ve (ilkindex <= sonindex) ) ortaindex = (ilkindex+sonindex) / 2 IIff ((ddiizzii[[oorrttaaiinnddeexx]] ==== aarraannaann ddeeğğeerr)) bulundu=‘D’ pozisyon=ortaindex Else If (dizi[ortaindex] > aranandeğer) sonindex=ortaindex - 1. Else ilkindex= ortaindex + 1. End If. End While. return pozisyon. Binary Arama Fonksiyonu – C++ Kodu int binaryArama(int dizi[], int boyut, int aranansayi) { int ilk = 0, // dizideki ilk değer son = boyut - 1, // dizideki son değer orta, // aramanın orta noktası pozisyon = -1; // aranansayi nin lokasyon değeri char bulundu = ‘Y’; // aranansayının bulunup bulunmadığı wwhhiillee (( ((bbuulluunndduu !!==‘‘DD’’)) &&&& ((iillkk <<== ssoonn)) )) { orta = (ilk + son) / 2; // orta noktayı hesapla if (dizi[orta] == aranansayi) // Eğer aranansayı dizinin ortasında ise { bulundu = ‘D’; // bulundu DOĞRU olarak atanmalı pozisyon = orta; // aranansayının pozisyonu tutulur } else if (dizi[orta] > aranansayi) // Eğer aranan sayı daha küçük ise son = orta - 1; // dizinin ilk yarısını arar. else ilk = orta + 1; // aksi takdirde dizinin ikinci yarısını arar. } return pozisyon; } Uygulama Programı • Takip eden 2 slaytta sayıların girilebileceği bir fonksiyon; • Girilen sayıların dizi içerisinde, girildiği şekliyle aranabilmesini sağlayan bir fonksiyon; •• GGiirriilleenn ssaayyııllaarrıı ssıırraallaayyaann bbiirr ffoonnkkssiiyyoonn;; • Binary arama yapan bir modül; • Dizi içerisinden değerleri ekrana yansıtmak için bir fonksiyon bulunmaktadır. • Dikkatlice inceleyiniz. while ( (bulundu == 'F') && (ilk <= son) ) #include<iostream.h> { #include<stdio.h> orta = (ilk + son) /2; #define max 10 if ( List[orta] == aranandeger ) { void List(int L[],int numElems) bulundu = 'T'; { pozisyon = orta ; for(int i=0;i<numElems;i++) } { cout <<i <<". sayiyi gir----> "; cin>>L[i]; } else if ( List[orta] > aranandeger ) } son = orta -1; else ilk = orta + 1; int Listedenara(int List[],int boyut,int aranandeger) } { return pozisyon; int indeks=0; } int pozisyon=-1; char bulundu='F'; void L_siralama(int List[], int boyut) while ((indeks<boyut) && (bulundu=='F')) { { int i,k, gecici; iiff((LLiisstt[[iinnddeekkss]]====aarraannaannddeeggeerr)) ffoorr ((ii==11;;ii<<bbooyyuutt;;ii++++)) { { k=i; bulundu='T'; while ((List[k]<List[k-1]) && (k>0)) pozisyon=indeks; { } gecici=List[k]; indeks++; List[k]=List[k-1]; } List[k-1]=gecici; return pozisyon; k--; } } } int B_arama(int List[], int boyut, int aranandeger) } { void diziyi_goster( int List[], int boyut) int ilk = 0, { son = boyut-1, int i; orta, pozisyon = -1; for (i=0;i<boyut;i++) char bulundu = 'F'; cout << i << ". sayi --->" <<List[i] <<"\n"; } sayfa 1 sayfa 2

Description:
Dizi (Array) sayilistesi içerisindeki sayılar aşağıdaki gibidir: 17. 23. 5. 11. 2. 29. 3. • 11, verilen dizi içerisinde aranacaksa doğrusal arama algoritması
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.