VERİ YAPILARI VE PROGRAMLAMA

Benzer belgeler
BIP116-H14-1 BTP104-H014-1

VERİ YAPILARI VE PROGRAMLAMA

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ELEKTRİK MAKİNELERİ (MEP 112) (ELP211) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

MEKATRONİĞE GİRİŞ (EEP251)

EIS526-H02-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

YÖNETİM BİLİŞİM SİSTEMLERİ

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ANADOLU ÜNİVERSİTESİ AÇIKÖĞRETİM FAKÜLTESİ İLKÖĞRETİM ÖĞRETMENLİĞİ LİSANS TAMAMLAMA PROGRAMI. Analiz. Cilt 2. Ünite 8-14

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

İŞLETMELERDE BİLİŞM SİSTEMLERİ (EMBA523) Yazar: Prof.Dr. Orhan TORKUL S1

Yrd. Doç. Dr. Ümit ATİLA

T.C. ANADOLU ÜNİVERSİTESİ YAYINI NO: 3275 AÇIKÖĞRETİM FAKÜLTESİ YAYINI NO: 2138 HAVACILIK EMNİYETİ

EIS526 -H01-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

İŞLETMELERDE BİLİŞİM SİSTEMLERİ (EMBA523)

ANADOLU ÜNİVERSİTESİ AÇIKÖĞRETİM FAKÜLTESİ İLKÖĞRETİM ÖĞRETMENLİĞİ LİSANS TAMAMLAMA PROGRAMI. Lineer. Cebir. Ünite

ELEKTRİK MAKİNELERİ (MEP 112) (ELP211) Yazar: Yrd. Doç. Dr. Mustafa Turan S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

FIRTINA SERİSİ MATEMATİK SORU BANKASI 5

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

EIS526 H10-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

EIS526 H13-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Veritabanı Yönetim Sistemleri I

EIS526 -H04-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

EIS526-H06-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

Ağaç (Tree) Veri Modeli

YÖNETİM BİLİŞİM SİSTEMLERİ

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

BIL222 Veri Yapıları ve Algoritmalar

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

TOEFL ibt LISTENING STRATEGIES & PRACTICE DR. HİKMET ŞAHİNER

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr. Gör. Hakan TUNAHAN S1

Algoritmalar ve Karmaşıklık

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Alıştırma 1: Yineleme

EK 1:NAMIK KEMAL ÜNİVERSİTESİ YAYIN ÖNERİ FORMU

ALGORİTMA VE PROGRAMLAMA I

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

Prof. Dr. Mahmut Koçak.

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

ALGORİTMA VE PROGRAMLAMA I

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Yrd. Doç. Dr. Caner ÖZCAN

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

EIS526 H11-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

Bilgisayar Ağları ve İnternet

FIRTINA SERİSİ MATEMATİK SORU BANKASI 4

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

YZM 2116 Veri Yapıları

Dr. Fatih AY Tel: fatihay@fatihay.net

Üşenme, Erteleme, Vazgeçme.

Çanakkale Onsekiz Mart Üniversitesi. Bilgisayar Mühendisliği Bölümü

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Nitel Araştırmalar için

Üşenme, Erteleme, Vazgeçme.

İŞLETMELERDE BİLİŞM SİSTEMLERİ (EMBA523) Yazar: Prof.Dr. Orhan TORKUL S1

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

YÖNETİM BİLİŞİM SİSTEMLERİ

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

Sıralı Erişimli Dosyalar. Kütük Organizasyonu 1

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#9: AÇGÖZLÜ ALGORİTMALAR

Üşenme, Erteleme, Vazgeçme.

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Okul Öncesi/İlkokul Çocukları İçin Sosyal Bilgiler Öğretimi

Mantıksal çıkarım yapmak. 9 ve üzeri

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

On Birinci Basımdan Çeviri. Eleventh Edition. Güncel Lojistik. Contemporary Logistics

Graf Veri Modeli. Düğümler kümesi. Kenarlar kümesi

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

ALGORİTMA İ VE PROGRAMLAMA

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

ERGENLiK ADOLESCENCE JOHN W. SANTROCK ÇEVİRİ EDİTÖRÜ: DOÇ. DR. DİĞDEM MÜGE SİYEZ

Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

Yrd. Doç. Dr. Caner ÖZCAN

VERİ YAPILARI. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ HASH TABLOLARI.

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Türk Dili II (MEP184) Yazar: Doç.Dr.Mehmet Mehdi Ergüzel S1

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

Transkript:

VERİ YAPILARI VE PROGRAMLAMA (BIP116) Yazar: Doç.Dr.İ.Hakkı.Cedimoğlu

SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun olarak hazırlanan bu ders içeriğinin bütün hakları saklıdır. İlgili kuruluştan izin almadan ders içeriğinin tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kayıt veya başka şekillerde çoğaltılamaz, basılamaz ve dağıtılamaz. Copyright 2004 by Sakarya University All rights reserved No part of this course contenet may be reproduced or stored in a retrieval system, or transmitted in any form or by any means mechanical, electronic, photocopy, magnetic, tape or otherwise, without permission in writing from the University. Sürüm 1 Sakarya... 2004 S 1

TEMEL ARAMA YÖNTEMLERİ Bu Haftanın Hedefi: Bilgisayar dünyasında çok sık kullanılan bir başka temel işlemi, belirli bir veri parçasının daha önceden oluşturulmuş geniş bir veri kümesi içerisinde aranarak bulunması oluşturmaktadır. Sıralama işlemi için olduğu gibi arama işlemi için de yıllardan beri kullanılan bazı arama veri yapıları ve bu yapılar üzerinde çalışan arama algoritmaları bulunmaktadır. Genellikle Sıralı Arama ve İkili Arama Algoritmaları tercih edilir. Bu haftaki dersimizde sıralı arama ve ikili arama algoritmaları ile ilgili bilgiler verilecektir. Bu Haftanın Materyalleri Bu haftaki dersimizde kullanacağımız bir materyal bulunmamaktadır. Kullanılan semboller Animasyon Soru Veritabanı Bağlantılı Soru Simülasyon Püf Noktası 1

Giriş Bilgi kümesi içerisinde belirli bir anahtar sözcüğe dayanarak ilgili diğer bilgilere erişme işlemine Arama denir. Belirli bir veri parçasının daha önceden oluşturulmuş geniş bir veri kümesi içerisinde aranarak bulunması bilgisayar ortamında çok sık kullanılmaktadır. Sıralama işlemi için olduğu gibi arama işlemi için de yıllardan beri kullanılan arama algoritmaları bulunmaktadır. Arama işlemlerinin yapılış biçimi, bilgiye ait verilerin düzenlenmesi ve bellekte tutulmasına göre farklılık gösterir. En basit arama şekli, bilgiye ait verilere baştan sona kadar tek tek bakılarak aranmasıdır; sıralı arama (sequential search) olarak adlandırılan bu yöntemde, arama programının yazılması kolay ancak çalışma hızı düşüktür. Daha hızlı yöntemlerden çoğunlukla, ikili arama (binary search) olarak adlandırılan algoritma tercih edilir. Arama algoritmalarından herhangi birini seçmek için genelde iki tercih kullanılır. Bunlar; bellek yada okunurluk olabilmektedir. Hangisinin en uygun olduğunu, uygulamada seçilen veri modeli ve uygulamadaki verinin boyutu belirler. Eğer veri kümesi içerisindeki eleman sayısı 50, 100 gibi onlar, yüzler mertebesinde ise, arama işleminde seçilecek algoritmanın ne olduğu o kadar önemli değildir; genellikle kodlama açısından en kolayı seçilir. Ancak, eleman sayısı onbinler, yüzbinler veya milyonlar mertebesinde ise, seçilecek arama algoritması programın performansı açısından oldukça önem kazanır. Seçilen arama algoritması veri modeline de çok bağlıdır. Bağlantılı liste üzerinde yalnızca doğrusal arama, ikili ağaç üzerinde ikili arama, bilgilerin sıralı tutulduğu dizi üzerinde ise hem doğrusal hem de ikili arama algoritmaları kullanılabilir. Bu derste, bir dizi içerisinde istenen elemanı aramak için kullanılabilecek aşağıdaki algoritmalar anlatılacaktır: 1. Sıralı arama (Sequential Search) 2. İkili arama (Binary Search) Sıralı Arama (Sequential Search) Arama yöntemleri içinde en basit yöntem olan sıralı arama yöntemi, bir dizi veya bağlantılı liste içinde yer alan elemanların içinde belirli bir verinin, elemanların sırayla kontrol edilerek aranması olarak tanımlanabilir. Herhangi bir eleman bulunacağı zaman veri yapısı ilk elemandan son elemana kadar tek tek kontrol edilecektir. Eğer arama işlemi birinci anahtar sözcüğe dayanarak yapılıyorsa aranan bulununca işlem sonlandırılır, ikinciye göre yapılıyorsa birden fazla sonuç olabileceğinden 2

son kayıta kadar gidilir. Eleman ekleme işleminde ise elemanlar dizinin veya bağlantılı listenin sonuna yerleştirilebilirler. Sıralı aramanın zaman karmaşıklığı O(N)'dir; N kayıt sayısı olmak üzere en kötü durumda N çevrim yapılması, ortalama olarak N/2 çevrim yapılması gerekir. Bu nedenle kayıt sayısı yüzler seviyesinden yüksek olan ve sık sık arama yapılan programlarda seçilmemelidir. Fakat, arama işleminin seyrek yapıldığı, kayıt sayısının az olduğu uygulamalarda sıralı arama algoritması kullanılabilir. Sıralı Aramada Bulma Hızını Arttırmak Sıralı aramanın kayıt arayıp bulma hızı arttırılabilir. Bunun için kullanılan yöntemlerden öne taşı yöntemi; en son aranıp da bulunan kayıtları bilgi kümesinin başına taşımak mantığına dayanır. Böylece yakın zamanda tekrar aranması olası kayıtlar başa getirilmiş olur ve sonraki aramalarda bu kayıda hızlı bir şekilde erişilir. Bu yaklaşımla ortalama arama zamanı azaltılmıştır. Fakat, aranan kayıdın başa getirilmesi ek işlem maliyeti getirir. Eğer bağlantılı liste kullanılıyorsa bu ek işlem maliyeti fazla olmaz; kayıt yerinden koparılır ve başa eklenir. Ancak, kayıt dizi veya disk üzerindeyse bu ek işlem ciddi bir işlem maliyeti doğmasına neden olur. İkili Arama (Binary Search) Aramada kullanılan kayıt sayısının çok fazla olduğu durumlarda sıralı arama işlem yükünü oldukça fazlalaştıracaktır. Bu yüzden ikili arama işlem yükünü azaltan bir yöntem olarak tercih edilir. İkili aramanın yapılabilmesi için veri yapımızda yer alan elemanların daha önceden sıralanmış olması gerekmektedir. Elemanlar sıralı olduğu durumda ikili arama metodu önce aranan elemanın anahtarını veri yapısının tam ortasında yer alan elemanla karşılaştırmakta ve bu elemandan büyük veya küçük olma durumuna göre aramaya aynı yöntemle veri yapısının alt veya üst bölümünde devam etmektedir. Bu yöntemle her bir adımla aramanın gerçekleştirildiği veri kümesinin büyüklüğü yarıya düşürülmüş olur. İkili aramada zaman karmaşıklığı O(log 2 N)'dir. Bu yüzden kayıt sayısı çok fazla olan uygulamalar için uygundur. Örneğin 1 milyon tane kayıtın bulunduğu bir veri kümesinde, arama işlemi, log 2 10000000 ~ 20'den yaklaşık 20 çevrimde bulunabilir. Aynı işlemi sıralı arama ile yapılmış olsaydı ortalama 500 bin çevrim, en kötü durumda ise 1 milyon çevrim gerekirdi. İkili arama yöntemi, sıralı olsa bile, bağlantılı listeler üzerinde uygulanamaz. Çünkü bağlantılı listelerde herhangi bir düğüme, ilk düğüm hariç erişilemez. 3