Arasınav Soruları Bahar 2018

Benzer belgeler
Arasınav Örnek Soruları Bahar 2018

Final Sınavı Soruları Bahar 2018

Final Sınavı Örnek Soruları Bahar 2018

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

YZM 2116 Veri Yapıları

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

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

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

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

Binary Tree nedir?uygulamas nasl yaplr?

Java String İşlemleri

YZM 2116 Veri Yapıları

Veri Yapıları. Ağaçlar

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

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

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

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

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

YZM 2116 Veri Yapıları

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

YZM 2116 Veri Yapıları

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

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

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

YZM 2116 Veri Yapıları

YMT219 VERİ YAPILARI ÖDEV-1

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

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

Veri Yapıları ve Algoritmalar dönem

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

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

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

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 6. UYGULAMA

Alıştırma 1: Yineleme

11- FONKSİYONLAR (FUNCTIONS)

Algoritmalar. İkili Arama Ağaçları. Bahar 2016 Doç. Dr. Suat Özdemir 1

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

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

YZM 2116 Veri Yapıları

Merge Sort Bireşen Sıralama

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

YZM 2116 Veri Yapıları

BIL222 Veri Yapıları ve Algoritmalar

Ağaç Yapıları (Tree Structures) Kütük Organizasyonu 1

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İ

MAT213 Bilgisayar Programlama I

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

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

Ağaç (Tree) Veri Modeli

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

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

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

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

KUYRUKLAR. Doç. Dr. Aybars UĞUR

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

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

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

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

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.

Programlama Dilleri 3

Örnek Arasınav Soruları Güz 2017

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Yapay Zekâ Dersi. Final Soruları A KİTAPÇIĞI. Güz,

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

JAVADA DİZİ İŞLEMLERİ

BİL132 Bilgisayar Programlama II

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

Veri Yapıları. Ağaçlar. Ağaçlar genel bilgi

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

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

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

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

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

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

Örnek 1: Programı yazın ve çalıştırın.

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

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

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

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı

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

BİL-141 Bilgisayar Programlama I (Java)

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

Java da İşleçler, Ders #3 (4 Kasım 2009)

BMH-303 Nesneye Yönelik Programlama

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

// hataları işaret eden referans

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA I

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

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

I Java Veri Yapıları 1

ByteArrayOutputStream

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

Transkript:

Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Arasınav Soruları Bahar 2018 Süre: 75 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu İmza Tarih 02.04.2018 Not /100 Soru#1 (10 puan): Aşağıda a, b, c, d, e ve f şeklinde isimlendirilmiş altı adet ağaç verilmiştir: Buna göre, yukarıdaki a, b, c, d, e ve f ağaçlarını, tam ikili ağaç (full binary tree), eksiksiz ikili ağaç (complete binary tree) ve katı ikili ağaç (strict binary tree) özellikleri taşımalarına göre gruplandırıp aşağıdaki tabloyu doldurunuz. Not: Herhangi bir ağaç, birden fazla özelliği taşıyor olabilir. İkili Ağaç Özelliği Tam İkili Ağaç Eksiksiz İkili Ağaç Katı İkili Ağaç İlgili Özelliği Örnekleyen/Taşıyan Ağaçlar f d, f d, f

Sayfa#2 Soru#2 (15 puan): Aşağıdaki kod parçalarının hesaplama karmaşıklıklarını (koşma süreleri bakımından), Big-O hesaplama kuralları doğrultusunda değerlendirerek, en kötü durum senaryoları için Big-O değerlerini belirleyiniz. Ara işlemlerin yazılması zorunlu değildir. Kod Parçası i. void silly(int n, int x, int y) if (x < y) for (int i = 0; i < n; ++i) for (int j = 0; j < n * i; ++j) System.out.println( y = + y); else System.out.println( x = + x); Karmaşıklık Sınıfı (Big-O) O(n 3 ) ii. iii. iv. void silly(int n) j = 0; while (j < n) for (int i = 0; i < n; ++i) System.out.println( j = + j); j = j + 5; void silly(int n) for (int i = 0; i < n * n; ++i) for (int j = 0; j < n; ++j) for (int k = 0; k < i; ++k) System.out.println( k = + k); for (int m = 0; m < 100; ++m) System.out.println( m = + m); void f2(int n) for(int i=0; i < n; i++) for(int j=0; j < 10; j++) for(int k=0; k < n; k++) for(int m=0; m < 10; m++) System.out.println("!"); O(n 2 ) O(n 5 ) O(n 2 )

Sayfa#3 Soru#3 (20 puan): Ağaç üzerinde gezinme (traversal) temelde inorder, postorder ve preorder şeklinde üç farklı yöntemle yapılabilmektedir. Örneğin, inorder gezinme sonucu 4, 8, 2, 5, 1, 6, 3, 7 ve postorder gezinme sonucu 8, 4, 5, 2, 6, 7, 3, 1 sıralamaları elde edilen bir ikili ağaç (binary tree) veri yapısı için aşağıda verilmiş olan ağaç yapısı oluşturulabilir: Buna göre, Inorder ve Postorder gezinme sıralamaları verilen bir ikili ağacı oluşturan programı yazınız. Algoritmanızın etkinlik sınıfını belirleyiniz. [Gerçekleştirimde, C#, Java, C vb. diller kullanılabilir. Çözüm, sözde kod ile algoritmik olarak da ifade edilebilir.] O(n 2 ) // Java program to construct a tree using inorder // and postorder traversals /* A binary tree node has data, pointer to left child and a pointer to right child */ class Node int data; Node left, right; public Node(int data) this.data = data; left = right = null; // Class Index created to implement pass by reference of Index class Index int index; class BinaryTree /* Recursive function to construct binary of size n from Inorder traversal in[] and Preorder traversal post[]. Initial values of instrt and inend should be 0 and n -1. The function doesn't do any error checking for cases where inorder and postorder do not form a tree */ Node buildutil(int in[], int post[], int instrt, int inend, Index pindex) // Base case if (instrt > inend) return null;

Sayfa#4 /* Pick current node from Preorder traversal using postindex and decrement postindex */ Node node = new Node(post[pIndex.index]); (pindex.index)--; /* If this node has no children then return */ if (instrt == inend) return node; /* Else find the index of this node in Inorder traversal */ int iindex = search(in, instrt, inend, node.data); /* Using index in Inorder traversal, construct left and right subtress */ node.right = buildutil(in, post, iindex + 1, inend, pindex); node.left = buildutil(in, post, instrt, iindex - 1, pindex); return node; // This function mainly initializes index of root // and calls buildutil() Node buildtree(int in[], int post[], int n) Index pindex = new Index(); pindex.index = n - 1; return buildutil(in, post, 0, n - 1, pindex); /* Function to find index of value in arr[start...end] The function assumes that value is postsent in in[] */ int search(int arr[], int strt, int end, int value) int i; for (i = strt; i <= end; i++) if (arr[i] == value) break; return i; /* This funtcion is here just to test */ void preorder(node node) if (node == null) return; System.out.print(node.data + " "); preorder(node.left); preorder(node.right); public static void main(string[] args) BinaryTree tree = new BinaryTree(); int in[] = new int[]4, 8, 2, 5, 1, 6, 3, 7; int post[] = new int[]8, 4, 5, 2, 6, 7, 3, 1; int n = in.length; Node root = tree.buildtree(in, post, n); System.out.println("Preorder of the constructed tree : "); tree.preorder(root);

Sayfa#5 Soru#4 (15 puan): Round robin iş zamanlaması algoritmasında, işlerin boyutları (büyüklüğü) değişken olabilmektedir. Quantum (q) adı verilen belli bir boyuttan büyük işlerin q boyutu kadarlık kısmı tamamlanıp, kalanı kuyruğun sonuna tekrar eklenmektedir. q boyutundan küçük (veya eşit) işler, boyutları kadar sürede tamamlanıp kuyruktan tamamen silinmektedir: Bu işlemi gerçekleştiren kuyruk sınıfını, enque (ekle) ve deque (sil) metotlarını yazınız. Deque içerisinde, tamamı bitirilemeyen işlerin kuyruğa belirtilen şekilde eklenmesini de gerçekleştiriniz. Tüm işlemlerin, yaklaşık aynı anda geldiklerini varsayabilirsiniz. Sil metodu içinde, etkin işin ve (o ana kadar tamamlanan işler için) ortalama tamamlanma süresini de hesaplatıp yazdırınız. Kuyruk altyapısında Vector kullanınız. [Gerçekleştirimde, C#, Java, C vb. diller kullanılabilir. Çözüm, sözde kod ile algoritmik olarak da ifade edilebilir.] class RoundRobin Vector<Integer> v; int q = 10, sayac, time, toplam; RoundRobin() v = new Vector<Integer>(); sayac = 0; time = 0; toplam = 0; public void enque(int sayi) v.add(sayi); public int deque() int prosessize = v.get(0); v.removeelementat(0); if (prosessize>q && (v.size()!=0)) time+=q; enque(prosessize-q); else time+=prosessize; System.out.println("Etkin Is Tamamlanma Suresi : "+time); toplam+=time; sayac++; System.out.println("Ortalama Tamamlanma Suresi : "+(toplam/sayac)); return prosessize;

Sayfa#6 Soru#5 (30 puan): Verilen bir string ifadesi açılış ve kapanış parantezleri içermektedir. Bu string ifade içerisindeki açılış ve kapanış parantezi eşleşen en uzun parça, en uzun geçerli parantez altstringi olarak tanımlanmaktadır. Aşağıda farklı girdiler için algoritmanın oluşturması gereken çıktı ve en uzun geçerli parantez altstringi sunulmaktadır: --------------------------------------------------------------------------------------------------------------------------- Girdi : ((() Çıktı : 2 En Uzun Geçerli Parantez Altstring : () Girdi: )()()) Çıktı : 4 En Uzun Geçerli Parantez Altstring: ()() Girdi: ()(())))) Çıktı: 6 En Uzun Geçerli Parantez Altstring: ()(()) --------------------------------------------------------------------------------------------------------------------------- Buna göre, verilen bir string ifadenin en uzun geçerli parantez altstringini ve altstring uzunluğunu yığın (stack) veri yapısı kullanarak, O(n) zaman karmaşıklığı ile çözünüz. [Gerçekleştirimde, C#, Java, C vb. diller kullanılabilir. Temel yığın operasyonları kullanılarak çözüm, sözde kod ile algoritmik olarak da ifade edilebilir.] import java.util.stack; class Test // method to get length of the longest valid static int findmaxlen(string str) int n = str.length(); // Create a stack and push -1 as initial index to it. Stack<Integer> stk = new Stack<>(); stk.push(-1); // Initialize result int result = 0; // Traverse all characters of given string for (int i=0; i<n; i++) // If opening bracket, push index of it if (str.charat(i) == '(') stk.push(i); else // If closing bracket, i.e.,str[i] = ')' // Pop the previous opening bracket's index stk.pop(); // Check if this length formed with base of // current valid substring is more than max // so far if (!stk.empty()) result = Math.max(result, i - stk.peek());

Sayfa#7 // If stack is empty. push current index as // base for next valid substring (if any) else stk.push(i); return result; // Driver method public static void main(string[] args) String str = "((()()"; System.out.println(findMaxLen(str)); str = "()(()))))"; System.out.println(findMaxLen(str));

Sayfa#8 Soru#6 (10 puan): A=[23, 3, 87, 34, 39, 1] dizisi için aşağıdaki sıralama algoritmalarını belirtilen adım sayısı kadar işleterek her adım sonunda dizinin son halini yazınız. Adım Sayısı Bubble Sort (Kabarcık Selection Sort (Seçimli Sıralama) Sıralama) 1. İşletim Adımı 3 23 87 34 39 1 1 3 87 34 39 23 2. İşletim Adımı 3 23 87 34 39 1 1 3 87 34 39 23 3. İşletim Adımı 3 23 34 87 39 1 1 3 23 34 39 87