Veri Yapıları ve Algoritmalar dönem

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
JavaScript Birinci Hafta.
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
Listeler.
Yığın ve Kuyruk.
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
Diziler & Kolleksiyonlar.  Çalışılan tüm objelerin bilinmemesi  Dinamik sayıda obje ile çalışmak  Benzer işlem yapılacak objeleri bir arada tutmak.
Diziler PHP.
Bölüm 4 – Kontrol İfadeleri:1.kısım
EDUTIME Java Day 4 Serdar TÜRKEL.
P p 8. Ünitede yinelemeli programlamanın teknikleri anlatılmaktadır. p p Gördüğünüz gibi, yinelemeli programlama bir problemin içinde problemin küçük parçalarını.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Sorting Methods Basics of Sorting Elementary Sorting Algorithms
P AKET E RIŞIMLERI SıNıFLARıN YENIDEN KULLANıMı. P AKET ( P ACKAGE ) Paketler kütüphaneleri oluşturan elemanlardır. import java.io.BufferedReader; BufferedReader.
Özyineli Sıralama Algoritmaları
Java Programlama Koleksiyon(Collection) Sınıfları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
DİZİLER (Arrays) Yrd.Doç.dr. Cİhad demİrlİ
DİZİLER.
C# Metot Overloading (Aşırı yükleme)
Sorular? Öneriler?. Referanslar Referanslar (Tekrar) Eğer aşağıdaki gibi yazarsak ne olur: int x; double y; char c; ???
Görsel C# Programlama Güz 2009 (6. Hafta).
Java Sınıf ve Nesne Kavramı UML Gösterimi
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Nesne.
ÇOK BİÇİMLİLİK POLYMORPHISM
KUYRUKLAR (QUEUES).
NESNEYE YÖNELİK PROGRAMLAMA
Class KahveFincani { public KahveFincani() { System.out.println("KahveFincani..."); } } public class YapilandirciBasitOrnek { public static void main(String[]
Diziler (Arrays).
JAVA’DA DİZİLER Dr.Galip AYDIN.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Ders İçeriği Liste Soyut veri yapısı (ADT)
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Python Aslı Ergün.
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
JAVA PROGRAMLAMA ORNEKLER
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
COSTUMES KILIKLAR (KOSTÜMLER)
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Veri Yapıları ve Algoritmalar
Seri Port ile İletişim.
Veri yapıları Hafta3 Dizi Yapıları.
AVL Trees / Slide 1 Silme * Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. * Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazi.
Yığıt Soyut Veri Tipi (Stack ADT) Yığıt Veri Yapısı
Kompozisyon Bir Sınıf diğer sınıf nesne referanslarını içinde barındırabilir. Bu referanslar sınıfın üyeleridir.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
İleri Algoritma Analizi
5- class & object Nesne Yönelimli Programlama - i
14.DERS Örnekler, Sorular BUKET DOĞAN.
Döngüler ve Shift Register
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

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 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Dersle ilgili bilgiler Ders Kitabı Data Structures and Algorithms in Java, 4th Ed., Michael T. Goodrich, Roberto Tamassia, Wiley, 2006. Web sayfası http://www3.itu.edu.tr/~etaner/courses/BT_VeriYap_07/ Sunular http://www3.itu.edu.tr/~gulsenc/dersler/btveri/btveri.html Notlandırma 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Ders Planı 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Ders Akışı Dizilerle kayıt saklama Kayıt ekleme Kayıt silme Sıralama (eklemeli) İki boyutlu diziler 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Kayıt Ör: Bir oyunda oyuncuların aldığı en yüksek skorların tutulacağı bir veri yapısı Oyuncu adı Skor Ayşe 1500 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Dizi Kayıtları, alınan skorlara göre sıralı olarak tutan veri yapısı Ayşe 1500 Kayıtları, alınan skorlara göre sıralı olarak tutan veri yapısı Dizi_boyutu=Dizide tutulmak istenen kayıtların sayısı Dizi_boyutu=5 1 Mert 1250 2 Ali 1000 3 Ooo 500 4 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Sıralamaya girmek Oyunu ilk defa oynayan sıralamaya muhakkak girer. Oyun ilk oynayan dizi_boyutu kadar kişi sıralamaya girer. (dizi_boyutu+1). Kişi için farklı durumlar oluşabilir: 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Sıralamaya girmek (dizi_boyutu+1). Kişi için farklı durumlar oluşabilir: Eğer skoru dizideki en düşük skordan küçükse diziye girmez. Eğer skoru dizideki en yüksek skordan büyükse dizinin en başına geçer. Eğer oyuncu sıralamaya girebilecek bir skor elde ettiyse, diziye girer, en düşük skorlu oyuncu diziden çıkarılır. 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Dizi nasıl sıralı tutulur? Kayıtlar diziye sıralı olarak eklenir. Sıralamaya girmeye hak kazanan oyuncuya ait kayıt doğru yer bulunarak yerleştirilir. Bu yerleştirme sonucunda dizi boyutundan daha fazla kayıt oluşuyorsa en düşük skorlu olan çıkarılır. 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Dizi nasıl sıralı tutulur? 6 8 7 5 4 3 7 6 5 4 3 8 7 6 5 4 3 !Dizi_boyutu=5 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Kayıt (http://ww0.java4.datastructures.net/source/) public class GameEntry { protected String name; // name of the person earning this score protected int score; // the score value /** Constructor to create a game entry */ public GameEntry(String n, int s) { name = n; score = s; } /** Retrieves the name field */ public String getName() { return name; } /** Retrieves the score field */ public int getScore() { return score; } /** Returns a string representation of this entry */ public String toString() { return "(" + name + ", " + score + ")"; } 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

/** Kayıtları tutmak için oluşturulan veri yapısı */ public class Scores { public static final int maxEntries = 10; // number of high scores we keep protected int numEntries; // number of actual entries protected GameEntry[] entries; // array of game entries (names & scores) /** Default constructor */ public Scores() { entries = new GameEntry[maxEntries]; numEntries = 0; } /** Returns a string representation of the high scores list */ public String toString() { String s = "["; for (int i = 0; i < numEntries; i++) { if (i > 0) s += ", "; // separate entries by commas s += entries[i]; return s + "]"; } // ... methods for updating the set of high scores go here ... 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Sıralı kayıt ekleme 6 7 5 4 3 7 5 6 4 3 7 5 4 3 6 7 6 5 4 3 7 5 4 6 3 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Sıralı kayıt ekleme 6 7 5 4 3 6 7 5 4 3 2 7 5 4 6 3 7 5 6 4 3 7 5 4 3 2 6 7 5 4 3 6 2 !Dizi_boyutu=5 7 6 5 4 3 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

public void add(GameEntry e) { /** Attempt to add a new score to the collection (if it is high enough) */ public void add(GameEntry e) { int newScore = e.getScore(); // is the new entry e really a high score? if (numEntries == maxEntries) { // the array is full if (newScore <= entries[numEntries-1].getScore()) return; // the new entry, e, is not a high score in this case } else // the array is not full numEntries++; // Locate the place that the new (high score) entry e belongs int i = numEntries-1; for ( ; (i >= 1) && (newScore > entries[i-1].getScore()); i--) entries[i] = entries[i - 1]; // move entry i one to the right entries[i] = e; // add the new score to entries 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Kayıt silme İstenilen indisteki kayıdı silmek ve silinen kayıdın indisini geri döndürmek. Eğer verilen indis doğru aralıkta değilse hata döndürülmelidir. indis<0 veya indis>dizi_boyutu Dizi boş kalan yeri doldurmak üzere güncellenmelidir. 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Kayıt silme 0 1 2 3 4 sil(2) 7 5 4 3 2 7 5 3 2 7 5 3 2 7 5 3 2 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

/** Remove and return the high score at index i */ public GameEntry remove(int i) throws IndexOutOfBoundsException { if ((i < 0) || (i >= numEntries)) throw new IndexOutOfBoundsException("Invalid index: " + i); GameEntry temp = entries[i]; // temporarily save the object to be removed for (int j = i; j < numEntries - 1; j++) // count up from i (not down) entries[j] = entries[j+1]; // move one cell to the left entries[numEntries -1 ] = null; // null out the old last score numEntries--; return temp; // return the removed object } 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Varolan bir diziyi sıralama 1 5 3 4 2 5 4 3 2 1 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Eklemeli sıralama (insertion sort) 1 5 3 4 2 5 3 1 4 2 5 1 3 4 2 5 1 3 4 2 5 3 1 4 2 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Eklemeli sıralama for i 1 to n-1 do cur A[i] j i-1 while j ≥ 0 and a[j] < cur do A[j+1] A[j] j j-1 A[j+1] cur 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

public static void insertionSort(char[] a) { /** Insertion sort of an array of characters into non-decreasing order */ public static void insertionSort(char[] a) { int n = a.length; for (int i = 1; i < n; i++) { // index from the second character in a char cur = a[i]; // the current character to be inserted int j = i - 1; // start comparing with cell left of i while ((j >= 0) && (a[j] < cur)) //while a[j] is out of order with cur a[j + 1] = a[j--]; // move a[j] right and decrement j a[j + 1]=cur; // this is the proper place for cur } 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

Java.util.Arrays equals(A,B) fill(A,x) sort(A) toString(A) 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü

İki boyutlu diziler int [][] Y = new int[4][5]; Y[i][i+1]=Y[i][i]+3 Y[0][1]=Y[0][0]+3 = 4+3=7 1 2 3 4 7 i=Y.length=4 j=Y[2].length=5 12/01/2007 - Gülşen Cebiroğlu Eryiğit, Istanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü