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



Benzer belgeler
Veri Yapıları ve Algoritmalar dönem

Merge (Bireşim) Algoritmayı önce bir örnek üzerinde açıklayalım.

YZM 2116 Veri Yapıları

static void dizi_24() { Random rnd = new Random(); int [] tutulan=new int[10]; int dogru;

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

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

YMT219 VERİ YAPILARI ÖDEV-1

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

ArrayList Uygulamaları

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

Insertion Sort. (Sokuşturma Sıralaması)

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

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

Dizi ( Array ) ve Dizgi ( String )

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

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

Arasınav Örnek Soruları Bahar 2018

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

YZM 2116 Veri Yapıları

ByteArrayOutputStream

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

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

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

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

YZM 2116 Veri Yapıları

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.

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Final Sınavı Örnek Soruları Bahar 2018

Merge Sort Bireşen Sıralama

ArrayList ve List yapıları. Bilgisayar Programlama 2 Erciyes Üniversitesi Bahriye Akay

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Ü

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

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

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

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

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

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

MOBİL UYGULAMA GELİŞTİRME

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

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

Arasınav Soruları Bahar 2018

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

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

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

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

Quick Sort Algoritması (Hızlı Sıralama Algoritması)

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

Alıştırma 1: Yineleme

YZM 2116 Veri Yapıları

KUYRUKLAR. Doç. Dr. Aybars UĞUR

YZM 2116 Veri Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

BİL132 Bilgisayar Programlama II

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

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

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

YZM 2116 Veri Yapıları

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

JAVADA DİZİ İŞLEMLERİ

Java String İşlemleri

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

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

Programlama Dilleri 3

1 JAVASCRIPT NEDİR? 1

Görsel Programlama (Visual Programming)

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

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

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Nesneye Dayalı Programlama

Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013

C++ ile Nesneye Dayalı Programlama

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

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

BMH-303 Nesneye Yönelik Programlama

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

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

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Final Sınavı Soruları Güz, Süre: 90 Dakika

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

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

const objects & const member functions

BAĞLAÇLI LİSTELER LINKED LISTS

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf("deger girin:"); scanf("%f", p); printf("girilen deger:%f\n", *p);

Matris İşlemleri Uygulaması

I Java Veri Yapıları 1

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

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

Final Sınavı Soruları Bahar 2018

Week 7. Düğüm bulma Tekli bağlı liste: phead ve ptail Dairesel bağlı liste Çift bağlı liste

ALGORİTMA VE PROGRAMLAMA I

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

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

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Mantıksal Kontrol ve Döngü Komutları

Transkript:

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

Ders Planı

Ders Akışı Dizilerle kayıt saklama Kayıt ekleme Kayıt silme Sıralama (eklemeli) İki boyutlu diziler

Kayıt Ör: Bir oyunda oyuncuların aldığı en yüksek skorların tutulacağı bir veri yapısı Oyuncu adı Skor Ayşe 1500

Dizi 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 0 1 2 3 Ayşe 1500 Mert 1250 Ali 1000 Ooo 500 4

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:

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.

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.

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

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 + ")"; } }

/** 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... }

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

Sıralı kayıt ekleme 6 7 5 4 3 6 7 5 4 3 2 7 5 4 6 3 7 5 4 3 2 6 7 5 6 4 3 7 5 4 3 6 2!Dizi_boyutu=5 7 6 5 4 3

/** 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 }

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.

Kayıt silme 0 1 2 3 4 7 5 4 3 2 sil(2) 7 5 3 2 7 5 3 2 7 5 3 2

/** 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

Varolan bir diziyi sıralama 1 5 3 4 2 5 4 3 2 1

Eklemeli sıralama (insertion sort) 1 5 3 4 2 5 1 3 4 2 5 3 1 4 2 5 1 3 4 2 5 3 1 4 2

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

/** 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

Java.util.Arrays equals(a,b) fill(a,x) sort(a) tostring(a)

İki boyutlu diziler int [][] Y = new int[4][5]; 0 4 1 2 3 0 1 2 3 4 7 Y[i][i+1]=Y[i][i]+3 i=0 Y[0][1]=Y[0][0]+3 = 4+3=7 i=y.length=4 j=y[2].length=5