NİŞANTAŞI ÜNİVERSİTESİ V E R I YA P I L A R I V E A L G O R I T M A L A R DERS 7 Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr YBLG202 VERI YAPILARI VE ALGORITMALAR DERS 7 ARAMA ALGORİTMALARI (SEARCH ALGORITHMS) NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu ARAMA ALGORİTMALARI Doğrusal Arama (Linear Search) Doğrusal arama çok basit bir arama algoritmasıdır. Bu tür arama, tüm öğeler üzerinde tek tek sıralı bir arama yapılır. Her öğe kontrol edilir ve bir eşleşme bulunursa, o öğe geri gönderilir, aksi halde arama, veri toplamanın sonuna kadar devam eder.Arama Zaman karmaşıklığı O(N) dir. Linear Search ( Array A, Value x) Step 1: Set i to 1 Step 2: if i > n then go to step 7 Step 3: if A[i] = x then go to step 6 Step 4: Set i to i + 1 Step 5: Go to Step 2 Step 6: Print Element x Found at index i and go to step 8 Step 7: Print element not found Step 8: Exit NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu ARAMA ALGORİTMALARI İkili Arama (Binary Search) İkili arama, Ο (log n) çalışma zamanı karmaşıklığına sahip hızlı bir arama algoritmasıdır. Bu arama algoritması, böl ve fethet ilkesinde çalışır. Bu algoritmanın düzgün çalışması için, veri toplama sıralanmış biçimde olmalıdır. İkili arama, koleksiyonun en orta öğesini karşılaştırarak belirli bir öğeyi arar. Bir eşleşme meydana gelirse, öğe dizini döndürülür. Orta öğe öğeden büyükse, öğe orta öğenin sağındaki alt dizide aranır. Aksi takdirde, öğe orta öğenin solundaki alt dizide aranır. Bu işlem, alt dizinin boyutunun sıfıra düşene kadar alt dizide de devam eder. Procedure binary_search A ← sorted array n ← size of array x ← value ot be searched Set lowerBound = 1 Set upperBound = n while x not found if upperBound < lowerBound EXIT: x does not exists. set midPoint = lowerBound + ( upperBound - lowerBound ) / 2 if A[midPoint] < x set lowerBound = midPoint + 1 if A[midPoint] > x set upperBound = midPoint - 1 if A[midPoint] = x EXIT: x found at location midPoint end while end procedure NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu ARAMA ALGORİTMALARI Doğrusal Arama vs. İkili Arama NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu YBLG202 VERI YAPILARI VE ALGORITMALAR Kaynakça NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu KAYNAKÇA 1. M.T. Goodrich, R.Tamassia, D. M. Mount, Data Structures and Algorithms in C++, John Wiley & Sons, Inc., 2011 2. Hakan Kutucu,VERİ YAPILARI, Karabük Üniversitesi Mühendislik fakültesi, 2014 3. Data Structures and Algorithms,TutorialPoints, NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu