HASH(KARMA) TABLOSU VERİ YAPISI

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "HASH(KARMA) TABLOSU VERİ YAPISI"

Transkript

1 HASH(KARMA) TABLOSU VERİ YAPISI Niçin Hash Tablosu? Arama algoritmaları, güncel ve sıkça başvurulan algoritmalardan birisidir. Bilgisayar ortamı veya diğer sayısal ortamlara kaydedilmiş bir bilginin daha sonra geri alınması pek çok uygulamada gerekli olmaktadır. Örneğin veri tabanı uygulamalarında arama işlemleri, web üzerinde arama motorları, ansiklopedi yada e-sözlük tarzı web siteleri vb hizmetler arama algoritmalarını yoğun olarak kullanan bazı uygulamalardır. Arama işlemi için bir anahtar değer kullanılır. İşlem sonucunda o anahtara ilişkin bilgiler elde edilir ya da aranılan bulunamaz. Arama algoritmalarının etkinliği kullanılan veri yapısı ile yakından ilişkilidir. Örneğin; N elemanlı bir Dizi ve Bağlı Liste Veri yapısı için arama işleminin çalışma süresi(maliyeti) O(N), İkili Arama Ağaçlarında ise O(logN) ile ifade edilmektedir. Hash(Karma) Tablosu; özellikle arama işleminin etkinliği açısından diğer veri yapılarına göre avantajlı olan bir veri yapısı olup, Arama, ekleme, silme gibi temel işlemlerin O(1) zamanda gerçekleştirilmesini sağlar. Hash Tablosu özellikle arama algoritmasının etkinliği açısından diğer veri yapılarına üstünlük sağlar. Arama işleminin yanı sıra ekleme, silme gibi temel işlemlerin de O(1) sürede gerçekleşmesini sağlayan önemli bir veri yapısıdır. İşlem Veri Yapısı Dizi Bağlı Liste İkili Arama Hash Tablosu Ağacı Ekleme O(N) O(1) O(logN) O(1) Silme O(N) O(1) O(logN) O(1) TANIM-HASH(KARMA) TABLOSU: Bir dizi elemandan oluşan basit bir veri yapısıdır. Elemanlar; sayısal(tc kimlik no.su, telefon no.su gibi), string(ad, Soyad gibi) veya özel tanımlı topluluk yapısı tipinden(ogrenci, Personel gibi) olabilir. N adet elemandan oluşan tablonun büyüklüğü N dir ve elemanlar 0 ile N-1 arasında normal bir dizideki gibi adreslenirler. Hash(Karma) Tablosunun özelliği; elemanlar ile adreslerini birbirine bağlayan birebir bir fonksiyon kullanmasıdır. Bu fonksiyona hash(karma) fonksiyonu denilir. Bu fonksiyon sayesinde elemanların bulundukları konumlar(indeksler), fonksiyonun hesaplanma zamanı kadar zamanda (genellikle sabit zamanda) belirlenebilir. Veri Toplulukları/Kayıtlar 1111 Ali Can 2220 Veli Can 3335 Ayşe Can 4444 Oya Can Key Key Hash Fonksiyonu Hash Tablosu 2220 Veli Can 1111 Ali Can 4444 Oya Can 3335 Ayşe Can

2 Yukarıdaki şekilde de görüldüğü gibi Hash Tablosu; verinin(yani elemanın) hash fonksiyonuyla hesaplanan konumda(indekste) tutulduğu veri yapısıdır. Bu veri yapısı veriye bir anahtar (key) yardımı ile erişilen basit bir dizi üzerine inşa edilmiştir. Anahtar(key) kullanılarak hash fonksiyonu yardımıyla bir indeks üretilir ve bu indeks ile dizideki istenen veriye ulaşılır. Anahtar tekildir(uniqe), yani bir başka kayıtta aynı anahtar olamaz. Ancak veri aynı olabilir. Bir sınıftaki öğrencilere ait kayıtlar bu duruma bir örnektir. Her öğrencinin sadece kendine ait bir numarası vardır. Ancak aynı isme sahip iki öğrenci olması muhtemeldir. Burada öğrenci numarası anahtardır(key), öğrenci ismi ise bu anahtara ait veridir. Hash Tablosu veri yapısı, yorumlayıcı (interpreter) ve derleyici (compiler) tasarımlarında, veritabanı (database) uygulamalarında, şifreleme (cryptography) yöntemlerinde yoğun olarak kullanılmakta ve doğrusal arama, ikili arama gibi diğer arama yöntemlerine göre daha hızlı sonuç vermektedir. Tamsayı elemanlardan oluşan bir Hash Tablosunun Java ile kodlanması: public class Karma{ Ornek[] tablo; boolean silindi; int N; public Karma(int N){ tablo=new Ornek[]; silindi=new boolean[n]; this.n=n; }} Hash Fonksiyonu-h(x): Bu fonksiyonun görevi; kendisine verilen bir değerden (value), benzersiz bir tamsayı (key) üretmektir. Fakat uygulama alanında her zaman benzersiz bir sayı üretecek uygun fonksiyonu bulmak çok zor hatta bazı durumlarda imkânsızdır. Eğer farklı iki değerden aynı sayı üretilirse bu duruma çakışma/çatışma (collision) denir. Hash fonksiyonu; her bir veriyi ayırt edebilecek bir anahtar değer(genellikle sayısal) var olduğu durumlarda anahtar verinin yerleştirileceği konumu(indeksi) belirlemede ve bu konum vasıtasıyla veriye hızlı bir şekilde ulaşmada kullanılır. Elemanların Hash Tablosuna yerleşeceği konumu belirlemede kullanılan iyi bir Hash(karma) fonksiyonu; hem elemanları hash tablosuna iyi serpiştirmeli, hem de mümkünse iki farklı elemanı aynı konuma(pozisyona) adreslememelidir. Bir hashing fonksiyonundan beklenenler: Herhangi bir uzunlukta değer alabilmelidir. Çıktı olarak belirlenen uzunlukta anahtar (key) üretebilmelidir. Tek yönlü olmalıdır. Fonksiyon tarafından üretilen anahtardan fonksiyona verilen değer elde edilmemelidir. Çatışmalara fırsat vermemelidir. 2

3 Örnek: 25, 129, 35, 2501, 47, 36 tamsayılarının N=15 olan bir Hash Tablosuna yerleştirilmesi; Boyutu N olan bir tabloda, hash fonksiyonu (h(x)) bir x anahtarını 0 ile N-1 arasında bir değerle eşleştirir. Örneğin N=15 olan bir tablo için hash fonksiyonu; h(x) = x % 15 olarak belirlenebilir. Bu durumda; x=25 için h(25)=25%15=10 olur. Bu 25 sayısının hash tablosunda 10. Konuma-indekse yerleşeceği anlamına gelir. Diğer x anahtarlarının h(x)=x%15 fonksiyonu ile hesaplanması sonucunda Hash tablosundaki konumları(indeksleri) aşağıdaki tabloda yer almaktadır: x h(x) Bu durumda anahtar verilerin Hash Tablosu içindeki yerleri şu şekilde olur: SORU: x=66 anahtarının hash tablosundaki konumu-indisi ne olur? Hash Tablosu veri yapısındaki temel problemler; Hangi hash fonksiyonun adreslemede kullanılacağı, Hash Tablosunun büyüklüğünün nasıl seçileceği, Eğer hash fonksiyonu birden fazla elemanı aynı konuma-indekse adreslerse(yani çakışma olursa) ne yapılacağıdır. Hash (Karma) fonksiyonun Java dilinde kodlanması: Hash (Karma) fonksiyonun anahtarları tamsayılar ise yani N elemanlı hash tablosu tamsayı elemanlardan oluşuyorsa en ilkel hash fonksiyonu anahtar%n şeklinde olabilir. Böyle bir hash fonksiyonun Java dilinde kodları: int karma(int anahtar){ return anahtar %N; } Bu fonksiyonun kullanılmasıyla ilgili olarak çıkabilecek sorun, anahtarın belli değerleri daha fazla, diğer değerleri hiç almamasıdır. Örneğin anahtar çoğunlukla 10 a bölünen sayılardan oluşuyorsa(banka hesabında bulunan para gibi) N yi 10 veya 10 a bölünen sayılardan seçmek uygun olmayacaktır. Böyle durumlarda önerilen çözüm N yi asal sayılardan seçmektir. Soru:Katar(String) ler için kullanılabilecek bir hash fonksiyonu nasıl kodlanabilir? 3

4 Hash fonksiyonları ve Çakışma(collision) Problemi için Stratejiler: Bir Hash fonksiyonu iki farklı anahtar değer için aynı konum/indeks adresliyorsa buna çakışma/çatışma(collision) denir. Örnek: Hash fonksiyonu h(x)=x%10 olsun. Bu fonksiyon; x=35 için h(35)=35%10=5 x=65 için h(65)=65%10=5 olacaktır. Yani 35 ve 65 key değerlerinin Hash tablosundaki konumları her ikisin de 5 olacaktır. Hash tabloları için önemli bir kısıtlayıcı durum olan bu problemin çözümü için literatürde bazı stratejiler önerilmektedir. Aşağıda bu stratejiler açıklanmaktadır. Strateji-1: Çakışma(collision) probleminin giderilmesi için kullanılabilecek stratejilerden birisi; Aynı konuma/indekse adreslenen elemanları bir bağlı liste ile tutmaktır. Bu strateji literatürde ayrı zincir oluşturma (seperate chaining) olarak adlandırılır. Aşağıdaki şekilde her elemanı bir bağlı liste olan Hash tablosu verilmiştir. Bu hash tablosunun oluşturulmasında: hash fonksiyonu h(x)=x%n (N=15)olarak alınmış, Hash tablosuna yerleştirilen elemanlar 16, 47, 35, 36, 127, 99, 25, 2501, 129, 65, 29, 14. Ayrı zincir oluşturma (seperate chaining-bağlı Liste kullanarak) yöntemi ile çakışma problemini çözmede temel varsayım, aynı pozisyona adreslenen eleman sayısının az olmasıdır. (Literatürde, aynı pozisyona adreslenen bağlı liste eleman sayısı 10 u geçmedikçe bu stratejinin en uygun çözüm olacağı 4

5 belirtilmektedir. Bu durumda örneğin elemanın yerleştirileceği tahmin edilen bir tablonun 1000 lik açılması yeterli olacaktır). Bağlı liste ile çakışma probleminin çözümünde aynı konuma adreslenen her yeni eleman bağlı listenin başına ekleneceğinden, her ekleme(sona) işlemi için çalışma süresi O(1) zamanda gerçekleşecektir. Ayrı zincir oluşturma stratejisinde eğer sisteme çok fazla eleman eklenirse yapı doğrusal arama yöntemine benzemeye başlar. Sisteme çok az eleman eklenirse sistem rastgele erişimli bir sistem gibi olur. Bu sistemde ortalama olarak sisteme kaç eleman geleceği konusunda bir öngörüde bulunulmalıdır. Hash Tablosu daha sonra büyütülebilirse de bunun doğal olarak bir maliyeti olacaktır. Aşağıdaki Java kodları Bağlı Liste veri yapısından yararlanarak bir Hash Tablosu tanımlamayı sağlar. public class Karma{ Liste[] tablo; /*Liste veri yapısının tanımı ders kitabı Sayfa 22 Tablo 2.5 te verilmektedir.*/ int N; public Karma(int N){ tablo=new Liste[N]; for(int i=0;i<n;i++) tablo[]=new Liste(); this.n=n; }} Strateji-2: Çakışma probleminin çözümü için bağlı liste kullanmak her ne kadar problemi çözse de; i). Yeni bir veri yapısını kullanmak zorunda olma, ii). Her yeni eleman eklendiğinde hafızada yer açmanın getirdiği yavaşlama nedenleriyle dezavantajlıdır. Çakışma probleminin çözümü için önerilen bir diğer strateji açık adresleme (open addressing)dir. Açık adreslemede bir çakışma meydana geldiğinde sırayla karma fonksiyonu h(x)+f(1)%n, h(x)+f(2)%n, h(x)+f(1)%n, h(x)+f(3)%n, Burada f fonksiyonu çakışma giderme fonksiyonu olarak adlandırılmakta ve değişik stratejiler ile değişik adreslemeler yapılabilmektedir. Strateji-2.1.Doğrusal strateji(sıralı Yoklama Yöntemi -Linear Probing ):Doğrusal stratejide f ; f(i)=i gibi doğrusal bir fonksiyondur. Bu yolla i. Konumda bir çakışma varsa bir sonrakine, orada da çakışma varsa bir sonraki konuma adresleme mümkün olabilmektedir. Diğer deyişle, Sıralı Yoklama Yöntemi (Linear Probing) yönteminde hash fonksiyonları ile elde edilen indekse değer yerleştirilmeye çalışılır. İlgili indeks dolu ise ilk boş indekse yerleştirme yapılır. 5

6 Örnek : Tablo N=15 eleman uzunluğunda olsun. Yerleştirilecek eleman 65 olsun. Hash fonksiyonu h(x)=x%n kullanıldığını düşünelim. Tablonun 5 nolu konumu dolu olduğundan 6 nolu indekse geçilir,6 nolu indeks de dolu bu şekilde devam ederken ilk boş indeks 7. Konum olduğundan 65 değeri 7nolu konuma yerleştirilir. Benzer şekilde yeni bir eleman ekleme işlemi ilk boş bulunan yere yapılır, Silme işlemi de ilk boş alan bulunana kadar devam eder. Avantaj/Dezavantajlar: Bağlı listeler gibi ayrı bir veri yapısına ihtiyaç duyulmaz. Kayıtların yığın şeklinde öbeklenmesine neden olur. Silme ve arama işlemleri için gereken zaman aynı hash değeri sayısı arttıkça artar. Sıralamalı yoklama yönteminin en önemli dezavantajı arama sırasında başarısız aramalarda (unsucsessful search) tablonun sonuna kadar gitme zorunluluğudur. Strateji-2.2.İkinci Derece strateji(quadratic Probing): Bu stratejiye göre çakışmanın olduğu adrese gelen ikinci kayıt, Karesel (Quadratic) fonksiyonla sonraki adrese yerleştirilir. En çok kullanılan fonksiyon: f(i) = h(x)+ i 2 Yeni pozisyon için sırasıyla (h(x)+1 ), (h(x)+2 ),..., (h(x)+n ) değerlerine karşılık gelen pozisyonlara bakılır ve ilk boş olana yerleştirilir. 6

7 Örnek: Tablo N=15 eleman uzunluğunda ve yerleştirilecek eleman 65 olsun. Hash fonksiyonu h(x)=x%n kullanıldığını düşünelim. Tablonun 5 nolu konumu dolu olduğundan bir sonraki adres h(65)+ 1 yani 6 nolu indekse geçilir, 6 nolu indeks de dolu bu durumda h(65)+2 yani 9 nolu indekse geçilir, bu indeks de dolu olduğundan h(65)+3 = 14.konuma geçilir, Tabloda 14. konum boş olduğundan 65 sayısı 14 konuma yerleştirilir. Avantaj/Dezavantajlar: Anahtar değerlerini Sıralı Yoklama Yöntemi (linear probing) metoduna göre daha düzgün dağıtır. Yeni eleman eklemede tablo boyutuna dikkat edilmezse sonsuza kadar çalışma riski vardır. Örneğin; Boyutu 16 (0-15) olan bir tabloda 0, 1, 4 ve 9 pozisyonlarının dolu olduğu durumda 16 değerini eklemeye çalıştığımız zaman sonsuz döngüye girer. Strateji-2.3.Çift Karma (Double Hashing) Stratejisi: Çift Karma stratejisinde aynı pozisyona gelen ikinci kayıt için ikinci bir hash fonksiyonu kullanılır. İkinci hash fonksiyonu 0 değerini alamaz. En çok kullanılan fonksiyon: hash(x) = hash1(x) + i * hash2(x) hash2(x)= R ( x % R ), Burada R Tablo boyutundan küçük ilk asal sayı seçilebilir. hash(x) = hash1(x) hash(x) = hash1(x) + 1 * hash2(x) hash(x) = hash1(x) + 2 * hash2(x) 7

8 hash(x) = hash1(x) + 3 * hash2(x) Örnek: 65 değerinin eklenmesi hash1(x)= x % 15 hash2(x)=11 ( x % 11 ) (11 asal sayısı 14 ten küçük olan ilk asal sayıdır.) hash(65) = hash1(65) hash(65) =5 dolu hash(65) = hash1(5) + 1 * hash2(65) hash(65) =5 +(11-10)=6 dolu hash(65) = hash1(5) + 2 * hash2(65) hash(65) =5 +2=7 Avantaj/Dezavantajlar: Anahtar değerlerini Sıralı Yoklama Yöntemi (linear probing) metoduna göre daha düzgün dağıtır ve öbekler oluşmaz. İkinci Derece (quadratic probing) stratejiye göre daha yavaştır. Çünkü ikinci bir hash fonksiyonu hesaplanır. ÖZET Hash Tablo veri yapısı ile veri arama, ekleme ve silme işlemleri sabit zamanda(o(1)) gerçekleşir. Bununla beraber tablo içindeki elemanların sıralanması, en büyük ve en küçük elemanların bulunması gibi işlemlerde verimli değildir. Hash tablolarının en büyük kısıtı diziler ile oluşturulmalarıdır. 8

9 JAVA COLLECTION FRAMEWORK(JFC) VE HASH TABLE SINIFI Hashtable sınıfı Java Collections Framework un bir üyesidir. java.util Class Hashtable<K,V> java.lang.object java.util.dictionary<k,v> java.util.hashtable<k,v> Bu sınıf anahtarları değerlere göndererek bir hash table yaratır. Null olmayan her nesne anahtar yada değer olarak kullanılabilir. Bir Hashtable yapısına nesneleri depolamak ve onlara erişimi sağlamak için, anahtar olarak kullanılan nesnelerin hashcode() metodu ile equals() metodunu kılgılıyor olması gerekir. Bir Hastable yapısının performansını etkileyen iki parametre vardır: başlangıç sığası ve yükleme katsayısı. Hashtable içindeki eleman sayısı onun kapasitesidir. Başlangıç sığası; Hashtable yaratılırken belirlenen bileşen sayısıdır. Yükleme katsayısı ise, sığasının ne kadarı dolduğunda otomatik olarak sığa artımına geçeceğini belirleyen orandır. Genellikle, yükleme katsayısı 0,75 dir. Bu demektir ki, Hashtable bileşenleri %75 oranında dolduğunda, sığa otomatik olarak artar. Bir Hashtable kurulurken, gerektiğinde sığası ve yükleme katsayısı belirlenebilir. JCF HashTable sınıfının işlevleri: Hashtable Sınıfının Kurucuları(Constructor) Hashtable() Başlangıç kapasitesi 11 ve yükleme katsayısı 0,75 olan boş bir Hashtable yaratır. Hashtable(int initialcapacity) Başlangıç kapasitesi parametrenin belirlediği sayı ve yükleme katsayısı 0,75 olan boş bir Hashtable yaratır. Hashtable(int initialcapacity, float loadfactor) Başlangıç sığası ve yükleme katsayısı parametrelerle belirlenen sayılar olan boş bir Hashtable yaratır. clear() Hiçbir anahtar içermeyecek biçimde Hashtable yapısını temizler. clone() Hashtable nesnesinin boş bir kopyasını yaratır. Anahtarları ve değerleri kopyalamaz contains(object value) Verilen öğeye eşleşen bir ya da birden çok anahtar varsa true değeri verir. containskey(object key) Verilen anahtara eşleşen bir gönderim varsa true değerini verir. elements() Hashtable içindeki değerleri numaralar. equals(object o) 9

10 Verilen nesnenin, parametredeki nesneye eşit olup olmadığını bulur. get(object key) Verilen anahtara eşleşen değeri verir. Eğer verilen anahtara eşleşen öğe yoksa null verir. hashcode() Map in hash kodunu verir. isempty() Hashtable in boş olup olmadığını denetler. keys() Hashtable içindeki anahtarları sıralar. put(k key, V value) Verilen anahtarı verilen öğeye eşler. remove(object key) Verilen anahtarı ve ona eşlenen değeri siler. tostring() Hashtable içindeki nesnelerin bir string temsilini verir. Bu temsil, değerleri metin olarak yazar ve onları küme simgesi ([]) içinde verir. Örnek: import java.util.hashtable; import java.util.enumeration; public class HashtableDemo { public static void main(string[] args) { Hashtable<Integer, String> htable = new Hashtable<Integer,String>(); // Hashtable nesnesine oğe ekleme htable.put(new Integer(474), "Kars"); htable.put(new Integer(376), "Balıkesir"); htable.put(new Integer(322), "Ankara"); htable.put(new Integer(232), "İzmir"); htable.put(new Integer(284), "Edirne"); // Hashtable oğelerini yazdır System.out.println(hTable); // anahtar ve değerlere erismek icin Hashtable sıralaması Enumeration em = htable.keys(); while (em.hasmoreelements()) { // Hashtable'ın oğelerine erisim int key = (Integer) em.nextelement(); // değere erisim String value = (String) htable.get(key); System.out.println("Anahtar :" + key + " değer :" + value);} 10

11 Program Ekran Çıktısı: {284=Edirne, 322=Ankara, 376=Balıkesir, 232=İzmir, 474=Kars} Anahtar :284 değer :Edirne Anahtar :322 değer :Ankara Anahtar :376 değer :Balıkesir Anahtar :232 değer :İzmir Anahtar :474 değer :Kars Örnek: import java.util.enumeration; import java.util.iterator; import java.util.hashtable; import java.util.collection; public class HashtableDemo { public static void main(string[] args) { // Hashtable nesnesi yarat Hashtable ht = new Hashtable(); // Hashtable nesnesine oğe ekle ht.put("1", "Merve"); ht.put("2", "Derya"); ht.put("3", "Ufuk"); Collection c = ht.values(); System.out.println("Hashtable'in oğeleri :"); // koleksiyon uzerinde Iterator Iterator itr = c.iterator(); while (itr.hasnext()) System.out.println(itr.next()); // koleksiyondan sil c.remove("merve"); // Hashtable oğeleri System.out.println("Silme işleminden sonra Hashtable geri kalan oğeleri :"); Enumeration e = ht.elements(); while (e.hasmoreelements()) System.out.println(e.nextElement());}} Program Ekran Çıktısı: Hashtable'in oğeleri : Ufuk Derya Merve Silme işleminden sonra Hashtable geri kalan oğeleri : 11

12 Ufuk Derya 12

İlgili Konular: Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, Serialized Form

İlgili Konular: Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, Serialized Form Class Hashtable java.util Class Hashtable java.lang.object java.util.dictionary java.util.hashtable Kılgıladığı Arayüzler: Serializable, Cloneable, Map Altsınıfları: Properties, UIDefaults

Detaylı

Arama metodlarında temel işlem anahtarları karşılaştırmaktır.

Arama metodlarında temel işlem anahtarları karşılaştırmaktır. (Kırpma) Hash Fonksiyonları Selecting Digits Folding (shift folding, boundary folding) Division MidSquare Extraction Radix Transformation Çakışma (Collision) ve çözümler Linear Probing Double Quadratic

Detaylı

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

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI YZM 2116- VERİ YAPILARI DERS#9: HASH FONKSİYONLARI İÇERİK Bu bölümde, Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision) Ayrık Zincirleme Çözümü Linear Probing Çözümü Quadratic Probing Çözümü konusuna

Detaylı

Kılgıladığı arayüzler: Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>

Kılgıladığı arayüzler: Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V> Class TreeMap java.util Class TreeMap java.lang.object java.util.abstractmap java.util.treemap Parametre tipleri: - the type of keys maintained by this map V - the type of mapped values ılgıladığı

Detaylı

Class LinkedHashMap. Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap. Kılgıladığı arayüzler:

Class LinkedHashMap. Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap. Kılgıladığı arayüzler: Class LinkedHashMap java.util Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap Kılgıladığı arayüzler: Cloneable, Map, Serializable Bildirimi: public

Detaylı

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

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi Veri Yapıları Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi Hash Tabloları ve Fonksiyonları Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision) Ayrık Zincirleme Çözümü Linear Probing

Detaylı

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ü

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ü 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ü Dersin Planı B+ Tree Temel bir veritabanı çalışma kodu Hash (Karma) Heap Ağaçlar

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 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 Bu bölümde, Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision)

Detaylı

6.Hafta Kıyım Fonksiyonu (Hashing), BST. Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme

6.Hafta Kıyım Fonksiyonu (Hashing), BST. Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme 1 6.Hafta Kıyım Fonksiyonu (Hashing), BST Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme Sembol-tablosu problemi 2 Doğrudan erişim tablosu 3 4 Çözüm

Detaylı

Class HashMap. Class HashMap java.lang.object java.util.abstractmap java.util.hashmap. Kılgıladığı Arayüzler: Cloneable, Map, Serializable

Class HashMap. Class HashMap java.lang.object java.util.abstractmap java.util.hashmap. Kılgıladığı Arayüzler: Cloneable, Map, Serializable Class HashMap java.util Class HashMap java.lang.object java.util.abstractmap java.util.hashmap Kılgıladığı Arayüzler: Altsınıfları Bildirimi: Cloneable, Map, Serializable LinkedHashMap, PrinterStateReasons

Detaylı

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

VERİ YAPILARI. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ HASH TABLOLARI. VERİ YAPILARI HASH TABLOLARI Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ muratgok@gmail.com Hash tabloları Hash tablo veri yapısı ile veri arama, ekleme ve silme işlemleri

Detaylı

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Map Arayu zu java.util Interface Map Altarayüzleri: SortedMap Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Map, Java Collections

Detaylı

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31 Bölüm 6. Karma Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 31 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi

Detaylı

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util. Class PriorityQueue java.util Class PriorityQueue java.lang.object java.util.abstractcollection java.util.abstractqueue java.util.priorityqueue Parametre tipleri: E - the type of elements held

Detaylı

Class HashSet. Metotlar. Class HashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset

Class HashSet. Metotlar. Class HashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset Class HashSet java.util Class HashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset Kılgıladığı arayüzler: Cloneable, Collection, Serializable, Set Altsınıfları:

Detaylı

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1 Görsel Programlama DERS 04 Görsel Programlama - Ders04/ 1 Diziler ve Kolleksiyonlar(Collections) Diziler aynı tipli değişkenleri tutmak için kullanılan veri yapılarıdır. Diziler sabit uzunlukludur. Birkez

Detaylı

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

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

Detaylı

Final Sınavı Örnek Soruları Bahar 2018

Final Sınavı Örnek Soruları Bahar 2018 Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Final Sınavı Örnek Soruları Bahar 2018 Süre: 70 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu

Detaylı

I Java Veri Yapıları 1

I Java Veri Yapıları 1 İçindekiler Önsöz xix I Java Veri Yapıları 1 1 Giriş 3 1.1 Veri Nedir?............................... 3 1.2 Algoritma Nedir?............................ 4 1.3 Veri Yapıları..............................

Detaylı

BAĞLAÇLI LİSTELER LINKED LISTS

BAĞLAÇLI LİSTELER LINKED LISTS BAĞLAÇLI LİSTELER LINKED LISTS Liste Günlük yaşamda listeler pek çok yerde kullanılmaktadır. Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı

Detaylı

Dosya Yapıları. (Başlangıçtan itibaren izlenen yaklaşımlar)

Dosya Yapıları. (Başlangıçtan itibaren izlenen yaklaşımlar) Dosya Yapıları (Başlangıçtan itibaren izlenen yaklaşımlar) Kayıtları disk üzerinde farklı şekillerde organize edebiliriz. En iyi organizasyon şekli dosyayı nasıl kullanmak istediğimiz ile ilgilidir. Dosyanın

Detaylı

HashMap O rnekleri. Örnek: /* U : Uranyum Au : Altın Ag : Gümüş Li : Lityum H : Hidrojen Altın Yeni değer : Radyum */

HashMap O rnekleri. Örnek: /* U : Uranyum Au : Altın Ag : Gümüş Li : Lityum H : Hidrojen Altın Yeni değer : Radyum */ HashMap O rnekleri import java.util.hashmap; import java.util.iterator; import java.util.map; import java.util.set; HashMap hm = new HashMap(); hm.put("h", "Hidrojen"); hm.put("li", "Lityum"); hm.put("au",

Detaylı

ArrayList(int initialcapacity) Sığası (capacity) parametrenin belirlediği sayıda olan bir dizi oluşturur.

ArrayList(int initialcapacity) Sığası (capacity) parametrenin belirlediği sayıda olan bir dizi oluşturur. ArrayList Sınıfı java.util Class ArrayList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.arraylist Java Collections Framework içinde yer alan bu sınıfın üç tane kurucusu

Detaylı

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu SORU 1 Dünyanın en uzun beş nehrini öğeleri olarak kabul eden bir yığıt (stack) yaratınız. Yığıtın üçüncü öğesini bulunuz. Yığıtın üstündeki öğeyi bulunuz ve

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

ArrayList Uygulamaları

ArrayList Uygulamaları ArrayList Uygulamaları Aşağıdaki program önce boş bir ArrayList yaratıyor. Sonra sırasıyla şu işleri yapıyor: Listenin boş olup olmadığını yaz. Ambara üç tane öğe ekle. İndisi 2 olan yere bir öğe sokuştur.

Detaylı

BAĞLAÇLI LİSTELER LINKED LISTS

BAĞLAÇLI LİSTELER LINKED LISTS BAĞLAÇLI LİSTELER LINKED LISTS Liste Günlük yaşamda listeler pek çok yerde kullanılmaktadır: Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı

Detaylı

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

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ Öğrenci Adı Soyadı: Öğrenci Numarası: S1 S2 S3 S4 S5 S6 S7 Toplam HACETTEPE ÜNİVERSİTESİ 2012-2013 BAHAR DÖNEMİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BBM202 Algoritmalar 1. Ara Sınav 25.04.2013 Sınav Süresi:

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Diziler (Arrays) 1 Dizi Kavramı Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların

Detaylı

Class LinkedHashSet. Class LinkedHashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset java.util.

Class LinkedHashSet. Class LinkedHashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset java.util. Class LinkedHashSet java.util Class LinkedHashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset java.util.linkedhashset Kılgıladığı arayüzler Bildirimi Cloneable,

Detaylı

D İ Z İ L E R A R R A Y S

D İ Z İ L E R A R R A Y S D İ Z İ L E R A R R A Y S 1 Örneğin 120 adet öğrencinin adını klavyeden girip, daha sonra bunları ekrandan yazdıralım. Bunun için, her öğrenci için ayrı bir değişken tanımlanmalıdır. String ad1; String

Detaylı

JAVADA DİZİ İŞLEMLERİ

JAVADA DİZİ İŞLEMLERİ JAVADA DİZİ İŞLEMLERİ Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız.

Detaylı

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

İ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İ İ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İ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 1 hafta Ödev No: 2 1- A)

Detaylı

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

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama Bölüm 39 Binary Search (Yarılama) 39.1 Dizide Bir Öğe Arama İkil aramayı (yarılama yöntemi) sıralı veri kümelerinde sık sık kullanırız. Örneğin, sözlükte bir sözcüğü ararken, sözlüğün bütün sayfalarını

Detaylı

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 19: Standart Şablon Kütüphanesi (vector) İçerik 19.1 Standart Şablon Kütüphanesi (STL) 19.2 vector SınıK 19.3 vectortanımı 19.4 vector Elemanlarına

Detaylı

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

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DOSYA ORGANİZASYONU ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Çarpışma çözümleme yöntemleri Sunum planı Bağlantıları kullanarak çarpışmaların çözümlenmesi. Coalesced Hashing (Birleştirilmiş

Detaylı

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form Class TreeSet java.util Class TreeSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.treeset Kılgıladığı arayüzler: Cloneable, Collection, Serializable, Set, SortedSet Bildirimi:

Detaylı

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

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ Öğrenci Adı Soyadı: Öğrenci Numarası: S1 S2 S3 S4 S5 Toplam HACETTEPE ÜNİVERSİTESİ 2014-2015 BAHAR DÖNEMİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BBM202 Algoritmalar 2. Ara Sınav 09.04.2015 Sınav Süresi: 90 dakika

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator Interface Comparator java.util Interface Comparator Kılgılayan sınıf: Collator Bildirimi: public interface Comparator Comparator arayüzü Java Collections Framework un bir üyesidir. Bir nesneler koleksiyonu

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

Hash Tablosu. Barış Şimşek simsek ~ enderunix. org http://www.enderunix.org/simsek/

Hash Tablosu. Barış Şimşek simsek ~ enderunix. org http://www.enderunix.org/simsek/ Hash Tablosu Barış Şimşek simsek ~ enderunix. org http://www.enderunix.org/simsek/ Pek çok uygulama sözlük tarzı EKLEME, ÇIKARTMA ve ARAMA gibi işlemleri gerçekleştirecek veri yapılarına ihtiyaç duyarlar.

Detaylı

Sınav Dağılım & IMKB Endeks

Sınav Dağılım & IMKB Endeks Sınav Dağılım & IMKB Endeks Ege Üniversitesi Bilgisayar Mühendisliği Veri Yapıları Proje-1 Hüseyin YAŞAR 05-06-7657 Didem KAYALI 05-06-7669 Umut BENZER 05-06-7670 Özlem GÜRSES 05-07-8496 Sürüm: 0.2 Bölüm

Detaylı

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

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır. Stack Sınıfı (yığıt) java.util Class Stack java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector java.util.stack Stack (yığıt) sınıfı nesnelerin LIFO (last-input-first-output)

Detaylı

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Java ile Nesneye Yönelik Programlama (Object Oriented Programming) Java ile Nesneye Yönelik Programlama (Object Oriented Programming) Giriş Yrd. Doç. Dr. Aybars UĞUR Örnek 1 Bir Yolcu sınıfı, yolcu1 nesnesi oluşturulması ve kullanılması class Yolcu String ad; String soyad;

Detaylı

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

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

Detaylı

YMT219 VERİ YAPILARI ÖDEV-1

YMT219 VERİ YAPILARI ÖDEV-1 YMT219 VERİ YAPILARI ÖDEV-1 1. İkiliBul yordamı aşağıda verilmiştir. İkiliBul yordamı A dizisi içerisinde 2 tane eşit sayı bulursa true bulamazsa false döndürmektedir. public boolean ikilibul(int[] A){

Detaylı

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

İ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İ İ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İ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 2 hafta ÖDEV NO: 5 1- BANKA

Detaylı

KUYRUKLAR. Doç. Dr. Aybars UĞUR

KUYRUKLAR. Doç. Dr. Aybars UĞUR KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

Detaylı

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

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği Yrd. Doç. Dr. A. Burak İER Bilgisayar Mühendisliği Algoritma Analizi İçerik: Temel Kavramlar Yinelemeli ve Yinelemesiz Algoritma Analizi Asimptotik otasyonlar Temel Kavramlar Algoritma: Bir problemin çözümüne

Detaylı

Class Vector. Class Vector java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector. Kılgıladığı arayüzler:

Class Vector. Class Vector java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector. Kılgıladığı arayüzler: Class Vector java.util Class Vector java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector Kılgıladığı arayüzler: Altsınıfları Bildirimi: Cloneable, Collection, List, RandomAccess,

Detaylı

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Öncelikli kuyruk konusunu hatırlayın. Kuyruğa sonradan eklenmesine rağmen öncelik

Detaylı

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

Ders 4: Diziler (Arrays( Arrays) barisgokce.com Ders 4: Diziler (Arrays( Arrays) Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Diziler Aynı tipteki bir veri gurubunun bir değişken içinde saklanmasıdır. Veriler Hafızada

Detaylı

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

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Diziler Dizi Tanımlama ve İlk Değer Atama Dizi Elemanlarının Kullanılması Dizi İşlemleri Java da Diziler JAVA DA DİZİLER 4 Dizi; tek bir veri tipinde,

Detaylı

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16 Bölüm 8. Ayrık Küme Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 16 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi

Detaylı

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı

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

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); 2009-2010 BAHAR DÖNEMİ MC 689 ALGORİTMA TASARIMI ve ANALİZİ I. VİZE ÇÖZÜMLERİ 1. a) Böl ve yönet (divide & conquer) tarzındaki algoritmaların genel özelliklerini (çalışma mantıklarını) ve aşamalarını kısaca

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi

Detaylı

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

Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util. LinkedList java.util Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util.linkedlist LinkedList sınıfı List arayüzünü kılgılar

Detaylı

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

Veri Yapıları Laboratuvarı

Veri Yapıları Laboratuvarı 2013 2014 Veri Yapıları Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Hakan KUTUCU Lab. Sorumlusu: Arş. Gör. Caner ÖZCAN İÇİNDEKİLER Uygulama 1: Diziler ve İşaretçiler, Dinamik Bellek Ayırma... 4 1.1. Amaç

Detaylı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)... Array (Diziler) Array Aynı tipten çok sayıda değişken topluluğudur. Birden fazla aynı tipteki değerle işlem yapmayı kolaylaştırır. X Y Score1 Score2 40 56 Grade 40 56 80 (0) (1) (2)... (13) Array tanımlama:

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 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 Bu bölümde, BÖLÜM - 3 Motivasyon: Neden Listeye İhtiyaç Var? Bağlı

Detaylı

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BİR BOYUTLU DİZİLER Amaçlar: 1. 1 BOYUTLU DİZİLERİ TANIMLAMAK 2. 1 BOYUTLU DİZİ UYGULAMALARI YAPMAK Örnek 5-1 Aşağıdaki program öğrenci notlarını bularak en iyi notu hesaplar. Harf notu şu şekilde hesaplanır:

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama

Detaylı

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

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ VERİ YAPILARI LİSTELER Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ Bağlı Listeler Aynı kümeye ait veri parçalarının birbirlerine bellek üzerinde, sanal olarak bağlanmasıyla

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

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

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİL1001 Bilgisayar Bilimlerine Giriş 1 DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu Tekrarlı Yapılar Algoritmanın belirli bir kısmının, belirli kere ya da belirli durumlar

Detaylı

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz. Ön bilgi: Dizi tanımlayabilmeli. foreach deyimi bilinmeli. Rastgele sayılar (Random) bilinmeli. 1. Aşağıda tamsayı tipinde iki boyutlu bir dizinin nasıl tanımlandığı, bir fonksiyona parametre olarak nasıl

Detaylı

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez... Javada Diziler Java da diziler nesnedir; içerisinde belirli sayıda eleman bulunur. Eğer bu sayı sıfır ise, dizi boş demektir. Dizinin içerisindeki elemanlara eksi olmayan bir tam sayı ile ifade edilen

Detaylı

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

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

Yrd. Doç. Dr. Ümit ATİLA Yrd. Doç. Dr. Ümit ATİLA Sıralama Bir grup veriyi azalan veya artan şekilde yerleştirme. Bilgisayar sistemleri için veri sıralama çok önemlidir. Sıralama işlemi, hem arama işlemlerini hem de bir grup veriyi

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN BAĞLI LİSTELER Bağlı listeler konusuna çalışmanın bazı faydaları var. Bağlı listeler gerçek programlarda kullanılabilecek bir veri yapısıdır. Bağlı listelerin güçlü ve zayıf yönlerini

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

Final Sınavı Soruları Bahar 2018

Final Sınavı Soruları Bahar 2018 Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Final Sınavı Soruları Bahar 2018 Süre: 70 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu İmza

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

SIRALAMA SORTING. Yrd. Doç. Dr. Aybars UĞUR

SIRALAMA SORTING. Yrd. Doç. Dr. Aybars UĞUR SIRALAMA SORTING Yrd. Doç. Dr. Aybars UĞUR Giriş Sıralama ve arama tekniklerinden pek çok programda yararlanılmaktadır. Günlük yaşamımızda elemanların sıralı tutulduğu listeler yaygın olarak kullanılmaktadır.

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

Veri Yapıları ve Algoritmalar 2006-2007 2.dönem

Veri Yapıları ve Algoritmalar 2006-2007 2.dönem Veri Yapıları ve Algoritmalar 2006-2007 2.dönem Öğretim Elemanları: Dr. A. Şima Etaner-Uyar Dr. Gülşen Cebiroğlu-Eryiğit Dersle ilgili bilgiler Ders Kitabı Data Structures and Algorithms in Java, 4th Ed.,

Detaylı

AĞAÇLAR. Doç. Dr. Aybars UĞUR

AĞAÇLAR. Doç. Dr. Aybars UĞUR AĞAÇLAR TREES Doç. Dr. Aybars UĞUR Giriş Bağlı listeler, yığıtlar ve kuyruklar doğrusal (linear) veri yapılarıdır. Ağaçlar ise doğrusal olmayan belirli niteliklere sahip iki boyutlu veri yapılarıdır (Şekil

Detaylı

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 4: Diziler Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları

Detaylı

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ AD SOYAD : TESLİM TARİHİ : OKUL NO : TESLİM SÜRESİ : 2 hafta Ödev No : 7 ****(ilk 3 soru çıktı üzerinde el

Detaylı

6.046J/18.401J DERS 7 Kıyım Fonksiyonu (Hashing I) Prof. Charles E. Leiserson

6.046J/18.401J DERS 7 Kıyım Fonksiyonu (Hashing I) Prof. Charles E. Leiserson Algoritmalara Giriş 6.046J/8.40J DERS 7 Kıyım Fonksiyonu (Hashing I) Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme Prof. Charles E. Leiserson October

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 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 Bu bölümde, BÖLÜM - 5 Kuyruk VY ve ADT Basit Kuyruk (Simple Queue)

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli Veri Modelleri Ağaç Veri Modeli Ağaç Veri Modeli Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen bir veri modelidir. Ağaç veri modeli daha fazla bellek

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 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 Bu bölümde, BÖLÜM - 8 Problem Tanımı Arama Ağaçları İkili Arama

Detaylı

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73 Bölüm 5. Ağaç Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 73 O. T. Yıldız, C && Java ile Veri Yapılarına, Boğaziçi Üniversitesi Yayınevi,

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları BLM-112 PROGRAMLAMA DİLLERİ II Ders-7 Sıralama Algoritmaları Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Sıralama Bir grup veriyi azalan veya artan şekilde yerleştirme.

Detaylı

Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için

Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için Interface Comparable java.lang Interface Comparable Altarayüzleri Delayed, Name, ScheduledFuture Kılgılayan Sınıflar: Authenticator.RequestorType, BigDecimal, BigInteger, Boolean, Byte, ByteBuffer,

Detaylı