Sunum

Öğr. Gör. Dr. Alper VAHAPLAR
2014 – 2015
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
2
1

Arama:
 Bilgi kümesi içinde belirli bir anahtar sözcüğe
dayanılarak onunla ilgili diğer bilgilere erişme ve
bulma işlemi
 Bilginin var olup olmadığı,
 Varsa nerede tutulduğunun belirlenmesi.

Arama işleminin yapılış şekli verilerin düzeni,
veri modeli ve bellekte tutulma şekline göre
değişir.
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
3
Arama işlemi belirli bir veya birkaç sözcüğe
göre gerçekleştirilir.
 Anahtar sözcük (Keyword)
 Eğer veri keyword’e göre sıralı tutuluyorsa
arama işlemi oldukça hızlıdır.
 Arama işlemi

 Bellek üzerinde ise dahili arama (internal search)
 Disk üzerinde ise harici arama (external search)
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
4
2

Internal Search (Dahili Arama)
 Veriye erişim hızlı,
 Yer değiştirme, araya ekleme, silme kolay ve hızlı

External Search (Harici Arama)
 Veriye erişim zor,
 Yer değiştirme, araya ekleme, silme yavaş
Alper VAHAPLAR

BİL2001-Algoritmalar ve Veri Yapıları
5
Primary Key (Birincil Anahtar)
 Her kaydı tek başına en iyi ifade eden özellik
 Her kayıt için farklı sözcük

Secondary Key (İkincil Anahtar)
 Birden fazla kaydı ifade eden,
 Farklı kayıtlarda tekrar eden.

Ör:
 Öğrenci Numarası (Primary Key)
 Öğrenci Adı (Secondary Key)
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
6
3

Sınıflandırma
 Doğrusal ya da Ardışıl (Sequential) Arama
 İkili (Binary) Arama
 Hash fonksiyonu ile Arama
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları

Bir dizideki tüm elemanlar, dizinin başından
sonuna kadar taranır.

Time Complexity = O(n)
7
int Seq_Search(int aranan, int a[])
{
int i;
for (i=0; i<n;i++)
{
if (a[i]==aranan) return i //Bulduk...;
}
return -1 // Bulamadık...;
}
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
8
4


Sıralı veriler üzerinde çalışır.
Bir çeşit köşeye sıkıştırma yöntemidir.
 Dizinin ortasına bakıp hangi tarafta arama
yapılacağına karar verilir.
 Daha sonra o kısmın ortasına bakarak ne
tarafında arama yapılacağına karar verilir.

Time Complexity = O(log2n)
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
9
int ikiliArama(int aranan, int a[])
{
int orta, bas=0, son=n;
while (bas<=son){
orta=(bas+son)/2;
if (a[orta] > aranan) son=orta-1;
else if (a[orta] < aranan) bas=orta+1;
else return orta; // Bulduk...
}
return -1; // Bulamadık....
}
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
10
5
int BinarySearch(int aranan,int a[], int bas, int son) {
if (bas > son) { return -1; } //Arananı Bulamadı...
int orta = (bas + son) / 2;
if (a[orta] > aranan)
return BinarySearch(aranan, a, bas, orta-1);
if (a[orta] < aranan)
return BinarySearch(aranan, a, orta+1, son);
return orta; //Bulduk...
}
Alper VAHAPLAR
BİL2001-Algoritmalar ve Veri Yapıları
11
6