20
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği

YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

  • Upload
    others

  • View
    32

  • Download
    0

Embed Size (px)

Citation preview

Page 1: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

YZM 2116

Veri Yapıları

Yrd. Doç. Dr. Deniz KILINÇ

Celal Bayar Üniversitesi

Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılım Mühendisliği

Page 2: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

BAŞLAMADAN ÖNCE

• Algoritma ve programlama bilgisi,

• C / C# programlama dili,

• Diziler, structlar, işaretçiler,

• Nesne Yönelimli Programlama

2Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Bu dersi alan öğrencilerin

aşağıdaki konuları bildiği

varsayılarak dersler

işlenecektir:

Page 3: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

BÖLÜM - 1

Bu bölümde,

• Algoritmalar ve Veri Yapıları,

• Lineer ve Non-Lineer Veri Yapıları,

• Statik ve Dinamik Veri Yapıları,

• Veri Yapılarının ADT ile Modellenmesi

konularına değinilecektir.

3Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 4: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

4

• Bilgisayar bilimlerindeki klasik problem çözme

süreci aşağıdaki gibidir:

Veri Yapıları ve Algoritmalar

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 5: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

Veri Yapıları ve Algoritmalar (devam…)

5

• Veri yapıları ve Algoritmalar, “Bilgisayar

Bilimleri” alanındaki en köklü ve klasik

konulardan birisidir.

• Tüm bilgisayar programları Algoritma ve Veri

Yapılarından oluşur.

• Algoritmalar veri ve değişkenleri kullanarak bir

problemin çözümüne ulaşır.

• Bir değişken bir integer veya char türünde

bellekte bir hafızalık bir yer tutarken, bir Veri

Yapısı algoritmanın kullanacağı bilgiyi bir grup

hafızada tutar.

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 6: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

• Örneğin, Array (dizi) bir veri yapısı bir isme

sahip aynı türde verilerin sabit uzunluklu bir

kümesidir.

• Bu bağlamda, bir Array için programın çalışması

süresince sabit uzunluklu bir hafıza ayrılır. Bu

yönüyle Array statik bir Veri Yapısıdır.

6

Veri Yapıları ve Algoritmalar (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 7: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

• Bilgisayar bilimlerinde işlenecek veri miktarı

büyüdükçe bu verilerin

o saklanması,

o sıralanması,

o veriler içinde arama yapılması

• gibi temel işlemlerin verimli şekilde (hafıza,

performans) gerçekleştirilebilmesi için farklı Veri

Yapılarının geliştirilmesi ihtiyacı doğmuştur.

7

Veri Yapısı Nedir?

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 8: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

• Bir problemin çözümü için öncelikle işlenecek verinin

çözüme uygun şekilde organize edilmesi gerekir. Bu

bağlamda VY tanımı:

• “Veri Yapısı, verinin verimli şekilde kullanılabilmesi için

belirli bir formatta saklanıp organize edilmesini

sağlayan matematiksel modeldir.”

8

Veri Yapısı Nedir? (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 9: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

Linear ve Non-Linear Veri Yapıları

• Stack, Queue, Tree ve Graph’lar Veri Yapılarına

birer örnektir.

• Verinin organize edilmesine bağlı olarak Veri

Yapıları iki grupta sınıflandırılırlar:1. Linear VY: Elemanların (verinin) sırayla

erişildiği Array, Linked List, Stack ve Queue gibi

yapılardır.

2. Non-Linear VY: Verinin lineer olmayan

(hiyerarşik, network) bir şekilde saklandığı-

erişildiği Tree ve Graph gibi yapılardır.

9Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 10: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

10

Veri Yapıları ve Türleri

Veri YapılarıTemel Veri Türleri

int real char bool Linear Non-Linear

Array Tree

Stack

Queue

Linked List Graph

Linear ve Non-Linear Veri Yapıları (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 11: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

• VY’leri implemente etmek için iki yöntem bulunmaktadır:

– Statik veri tipleri kullanmak (diziler). Statik veri türleri,

kendilerine ayrılan bölümün tamamını kullanmasalar dahi

sabit bir bellek alanı tahsis ederler.

– Dinamik veri tipleri kullanmak (işaretçi, referans türleri).

Program çalışma zamanında boyutları büyüyüp

küçülebilir.

• Statik VY’ler, dinamik VY’leri oluştururlar.

11YZM 2116 – Veri Yapıları

Veri Yapıları Implementasyonu

Page 12: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

12

Örnek VY: Linked List (Bağlı Liste)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 13: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

13

Örnek VY: Tree (Ağaç)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 14: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

Bir algoritma için benzer VY modelleri arasından

seçim yapılırken hangi kriterleri göz önünde

bulunduracağız?

1. Hafıza kullanımı

2. Verimliliği (kabaca hızı)

14

Hangi VY Kullanacağım?

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 15: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

Abstract Data Type (ADT)

• ADT (Abstract Data Type), VY bağlamında bir

problemin bilgisayar çözümü için kullanılan, genelde

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 (kısmen)

modellenmesidir.

• Örneğin, bir tamsayı dizisi ve bu dizi üzerinde read, sort,

search ve print işlemleri basit bir ADT modelidir.

15Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 16: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

Örnek: Stack ADT

16

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.

Yığınİşlemleri

Açıklama

push() Yığına eleman ekler.

pop() En son eklenen elemanı ayırır.

top() Son eklenen eleman değerini getirir.

size() Eleman sayısını döndürür.

isEmpty() Yığında eleman olup olmadığını kontrol eder.

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 17: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

• 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.

• ADT’ler NYP yaklaşımında Interface ve Abstract

Class 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 ilgili Interface’i implemente eden

sınıflarda tanımlanır.

17

Örnek: Stack ADT (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 18: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

18Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Örnek: Stack ADT (devam…)

Page 19: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

19

İYİ ÇALIŞMALAR…

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 20: YZM 2116 Veri Yapıları · 2016. 2. 22. · BÖLÜM - 1 Bu bölümde, •Algoritmalar ve Veri Yapıları, •Lineer ve Non-Lineer Veri Yapıları, •Statik ve Dinamik Veri Yapıları,

Yararlanılan Kaynaklar

20

• Ders Kitabı:

• Data Structures through JAVA, V.V.Muniswamy

• Yardımcı Okumalar:

• Data Structures and Algorithms in Java, Narashima

Karumanchi

• Data Structures, Algorithms and Applications in Java,

Sartaj Sahni

• Algorithms, Robert Sedgewick

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları