VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Benzer belgeler
YZM 2116 Veri Yapıları

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

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

Arasınav Örnek Soruları Bahar 2018

YZM 2116 Veri Yapıları

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

I Java Veri Yapıları 1

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

BMT207 VERİ YAPILARI DATA STRUCTURE

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

Alıştırma 1: Yineleme

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

Çizgeler (Graphs) Doç. Dr. Aybars UĞUR

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

VERİ YAPILARI DATA STRUCTURE GİRİŞ

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

ALGORİTMA VE PROGRAMLAMA II

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

Azalt ve Fethet Algoritmaları

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

YZM 2116 Veri Yapıları

Ağaçlar (Trees) Ağaçlar (Trees)

Teori/Saat Uygulama/Saat Laboratuar/Saat AKTS BLM Dersin Amacı

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Teori/Saat Uygulama/Saat Laboratuar/Saat AKTS BLM Dersin Amacı

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

Final Sınavı Soruları Bahar 2018

DOSYA ORGANİZASYONU. Ağaç Yapıları ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

{\} /\ Suhap SAHIN Onur GÖK

Arasınav Soruları Bahar 2018

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

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

VERİ YAPILARI. GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

Yrd. Doç. Dr. Caner ÖZCAN

Veri Yapıları Laboratuvarı

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

YZM 2116 Veri Yapıları

GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi VERİ YAPILARI. Bilgisayar Mühendisliği ÖĞR.GÖR.GÜNAY TEMÜR 1

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İ

Yrd. Doç. Dr. Caner ÖZCAN

Programlama Dilleri 3

ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

ALGORİTMA VE PROGRAMLAMA II

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

ALGORİTMA VE PROGRAMLAMA I

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

ALGORİTMA VE PROGRAMLAMA I

BIL222 Veri Yapıları ve Algoritmalar

JAVADA DİZİ İŞLEMLERİ

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

YZM 2116 Veri Yapıları

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Ağaç (Tree) Veri Modeli

ALGORİTMA VE PROGRAMLAMA II

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

Final Sınavı Örnek Soruları Bahar 2018

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

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ü

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util.

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

Özyineleme (Recursion)

Nesneye Dayalı Programlama

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

SOMEBODY ELSE'S. ( DATA STRUCTURES and ALGORITHMS ) Veri Yapıları ve Algoritmaları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

YMT219 VERİ YAPILARI ÖDEV-1

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

Yrd. Doç. Dr. Caner ÖZCAN

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

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);

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CME 2001

Göstericiler (Pointers)

1 JAVASCRIPT NEDİR? 1

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 > =

Transkript:

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016

1. DERS İÇERİĞİ VE KAYNAKLAR Veri Yapıları (VY) dersinde görülmesi muhtemel konu başlıkları bölüm 1.1 de verilmiştir. Her VY teorik-örnekli açıklamasının yanında, ilgili VY nin C# programlama dilinde tasarlanması, güncel uygulamalarda kullanımı şeklinde ders anlatımı ve uygulamalar gerçekleştirilecektir. 1.1 Veri Yapıları Dersi Muhtemel Konu Başlıkları Veri Yapılarına Giriş Linked-Lists: List ADT, Array la Linked-List oluşturma, Doubly Linked-List, Stack ADT: Array uyarlaması, Linked-List uyarlaması Queue ADT: Array uyarlaması, Priority Queue, Deque (double ended queue) Tree: Binary Tree, Array, Linked-List uyarlamaları, recursive ve non-recursive fonksiyonlarla binary-tree nin (Preorder, Inorder ve Postorder) taranması (traverse), Binary Search Tree de, Insert, Delete ve Search işlemleri Search-Tree: Binary Search Tree, AVL-Tree ve B-Tree de Insert, Delete, Search Heap ve Priority Que ları: Heap ler de Insert, Delete, Heap Priority Queue sınıfı 1 Search ve Sort: Linear, Binary arama, Bubble, Selection, Insertion, quick, Merge, Heap, Radix ve Binary Tree sort algoritmaları Graph: Graph gösterimi (Adjacency Matrix), Graph Traverse (Deep-First, Breadth First, Kruskal, Prim ve Dijkstra) algoritmaları 1.2 Ders Kaynakları Ders kitabı olarak [1] kullanılacak olup (Chapter 8 den itibaren), LAB uygulamaları yine aynı kitabın LAB kitapçığından türetilecektir. Kaynak kitap olarak aşağıdaki dokümanlardan faydalanılacaktır: - Data Structures through JAVA, V.V.Muniswamy 1 - DSA Lecture Notes 2 - DSA Book 3 2. VERİ YAPILARI VE ALGORİTMALAR Veri yapıları ve Algoritmalar, Bilgisayar Bilimleri alanındaki en köklü ve klasik konulardan birisidir. Tüm bilgisayar programları algoritmalardan ve VY lerden oluşur. Bilgisayar bilimlerindeki klasik problem çözme süreci aşağıda belirtilmiştir.

Bilgisayar bilimlerinde işlenecek veri miktarı büyüdükçe bu verilerin saklanması, sıralanması, veriler içinde arama yapılması gibi temel işlemlerin verimli şekilde (hafıza, performans) gerçekleştirilebilmesi için VY ler geliştirilmiştir. Kısaca; Veri Yapısı, verinin verimli şekilde kullanılabilmesi için belirli bir formatta saklanıp organize edilmesini sağlayan matematiksel modeldir. VY leri implemente etmek için iki yöntem bulunmaktadır: a) Statik veri tipleri kullanmak (diziler). Statik veri türleri, kendilerine ayrılan bölümün tamamını kullanmasalar dahi sabit bir bellek alanı kullanırlar. b) Dinamik veri tipleri kullanmak (işaretçi, referans türleri). Program çalışma zamanında boyutları büyüyüp küçülebilir. Stack, Queue, Tree ve Graph lar VY lere bir örnektir. Verinin organize edilmesine bağlı olarak VY ler iki grupta sınıflandırılırlar: a) Linear VY: Elemanların (verinin) sırayla erişildiği Array, Linked List, Stack ve Queue gibi yapılardır. Daha basit VY lerdir. b) Non-Linear VY: Verinin lineer olmayan bir şekilde saklandığı-erişildiği Tree ve Graph gibi yapılardır. Şekil. Veri Yapıları Örnek: Liste Veri Yapısı

Örnek: Ağaç Veri Yapısı Bir algoritma için benzer VY modelleri arasından seçim yapılırken, VY nin hafıza kullanımı ve verimliliği (kabaca hızı) kullanılacak iki parametredir. VY lerin, güçlü ve zayıf yönleri üzerinden ele alan tablo aşağıda verilmiştir. Tablo. VY larının özet performans karşılaştırması

3. VERİ YAPILARI VE ADT KAVRAMI ADT (Abstract Data Type), VY bağlamında bir problemin bilgisayar çözümü için kullanılan matematiksel bir modeldir. Örneğin, bir grup sayıyı sıralamak için ADT, bir dizi ve dizi üzerinde çalışan sıralama algoritması olarak düşünülebilir. Bir başka ifadeyle, bir ADT verinin organizasyonu ve onların üzerinde yapılacak işlemlerin matematiksel modellenmesidir. Örneğin, bir tamsayı dizisi ve bu dizi üzerinde read, sort, search ve print işlemleri basit bir ADT modelidir. 1 Yaygın kullanılan ADT ler den biri olan Stack ADT si, verinin saklanma biçimi ve bu veri üzerinde tanımlanan işlemler şeklinde modellenir. Şekil. Stack veri saklanma biçimi Temel Stack İşlemleri: push (): Stack a bir eleman ekle pop (): En son eklenen elemanı Stack tan ayır Ek Stack İşlemleri: top(): Son eklenen elemanın değerini getirir size(): Stack taki eleman sayısını getirir Mantıksal isempty(): Stack ta elaman olup olmadığı kontrol edilir Stack Hata İşlemleri: Stack ta eleman olmadığında pop() ve top() işlemleri gerçekleştirilemez Aynı şekilde uyarlamaya bağlı olarak Stack a ayrılan alan doluysa push() gerçekleştirilemez. Buna uygun hata yakalama işlemleri de düşünülmelidir. Tablo. Stack işlemleri ADT, kullanıcı açısından arka plandaki karmaşıklığı kullanıcıdan soyutlama (abstraction) anlamında, OOP mantığına uygun bir yaklaşımdır. Örneğin bu soyutlama biçimi, Stack ADT sinde verinin saklama biçimi (Array, Linked List veya Tree) ve Stack işlemlerinin detayı kullanıcı tarafından bilinmeden kullanılmasını sağlar. ADT ler Interface veya Abstract Classlar ile tanımlanırlar. Interface de metot adları, parametre türleri ve döndürecekleri değer türleri gibi soyut tanımlamalar yapılırken metotlar 1 Data Structures through JAVA, V.V.Muniswamy (pg 86-87)

ilgili Interface i uyarlayan sınıflarda tanımlanır. Örnek bir Stack ADT Interface aşağıdaki tabloda verilmiştir. interface StackADT {. Boolean isempty();. void Push(Object element);. Object Pop();. Object Peek();. void Display(); }