Öğ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
© Copyright 2024 Paperzz