Alıştırma 1: Yineleme



Benzer belgeler
BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

YZM 2116 Veri Yapıları

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

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

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

VERİ YAPILARI DATA STRUCTURE GİRİŞ

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

YZM 2116 Veri Yapıları

YMT219 VERİ YAPILARI ÖDEV-1

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

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

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

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

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

YZM 2116 Veri Yapıları

Dr. Fatih AY Tel: fatihay@fatihay.net

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

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

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Selection Sort Insertion Sort

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki,

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

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Ü

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

Algoritmalar ve Karmaşıklık

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

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

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

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

ALGORİTMA VE PROGRAMLAMA I

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

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

BIL222 Veri Yapıları ve Algoritmalar

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

Standard Template Library

Arasınav Örnek Soruları Bahar 2018

VERİ YAPILARI VE PROGRAMLAMA

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

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

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

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

ALGORİTMA VE PROGRAMLAMA I

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

3.Hafta Master Teorem ve Böl-Fethet Metodu

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

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

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

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

YZM 2116 Veri Yapıları

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

ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

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

Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.

Diziler & Karakter Katarı (String)

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

YZM 2116 Veri Yapıları

BİL1001 Bilgisayar Bilimlerine Giriş 1

BIP116-H14-1 BTP104-H014-1

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

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

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Fall Object-Oriented Programming Laboratory 02 - Structures

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

I Java Veri Yapıları 1

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

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

Diziler (Arrays) Çok Boyutlu Diziler

Arasınav Soruları Bahar 2018

Bölüm Özeti. Algoritmalar. Fonksiyonların Büyümesi. Algoritmaların Karmaşıklığı. Örnek Algoritmalar Algoritmik Paradigmalar

BMT207 VERİ YAPILARI DATA STRUCTURE

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

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

Final Sınavı Örnek Soruları Bahar 2018

Veri Yapıları Laboratuvarı

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

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

Dr. Fatih AY Tel: fatihay@fatihay.net

C++ Dersi: Nesne Tabanlı Programlama

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

Algoritma Analizi Big O

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

Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

TBP101 (4. Hafta) Alıştırma Soruları ve Cevapları

Excel de Düşeyara Vlookup) Fonksiyonunun Kullanımı

Veri Yapıları ve Algoritmalar dönem

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

Problem Set 1 Çözümler

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

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

Merge Sort Bireşen Sıralama

Algoritmalara Giriş Eylül 21, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Çalışma notu 6

Transkript:

Alıştırma 1: Yineleme

Alıştırma 2: Yineleme H10->H2 çevrimini yapınız 7 2 1 3 2 1 1 1 2 0

Hafta 3: Yineleme Alıştırmaları(1) E1. (44/174) S değerini yineleme kullanarak hesap ediniz S = 1 + 2 + 3 + n

Hafta3: Yineleme Alıştırmaları (2-3) E3(a). Bir sayıyı tersten yazdıran bir program yazımız. Örnek: input n=12345. Print out: 54321. E3(b). Bir sayıyı olduğu gibi yazdıran programı yineleme ile yeniden yazdırınız. Örnek: input n=12345. Print out:12345.

Hafta3: Yineleme Alıştırmaları (4) E4. Bir tamsayının elemanlarını toplayarak sonucu elde eden programı yineleme mantığı ile yazınız. Örnek: n=1980 => Toplam=1+9+8+0=18.

Hafta3: Yineleme Alıştırmaları(5) E4. aşağıdaki hesabı yineleme mantığı ile kodlayınız : S=a[0]+a[1]+ a[n-1] A: tamsayıların bir dizisi

Hafta3: Yineleme Alıştırmaları (6) E4. bir dizideki bir elemanı yinelemeli bir fonksiyon yardımıyla bulma (doğrusal arama algoritması kullanılacak)

Hafta3: Yineleme Alıştırmaları (7) Üçgenleri yazdırın c d a b

Hafta3 Kısım 3: ARAMA TEKNİKLERİ 1. DOĞRUSAL (SIRALI) ARAMA 2. İKİLİ ARAMA 3. ALGORİTMALARIN KARMAŞIKLIĞI

ARAMA TEKNİKLERİ Bir elemanın listede olup olmadığını bulmak için yerine getirilir. 2 yöntemi vardır: doğrusal arama ve ikili arama Kullanılacak metot veri listesinin nasıl organize edildiği ile ilgilidir Sırasız liste: Doğrusal arama: basit, yavaş Sıralı liste: İkili ve doğrusal arama: karmaşık, daha hızlı

1. DOĞRUSAL (SIRALI) ARAMA Nasıl? Aranan eleman listedeki elemanlarla sırayla karşılaştırılır Bu işlem eleman bulunana kadar veya liste sonuna varana kadar devam eder. Eğer eleman bulunursa geriye elemanın sırası bilgisi döndürülür Eğer listenin sonuna kadar bir eşleşme olmazsa arama başarısızlıkla sonuçlanır.

1. DOĞRUSAL (SIRALI) ARAMA void lsearch(int list[],int n,int element) { int i, flag = 0; for(i=0;i<n;i++) if( list[i] == element) { cout<< found at position <<i); flag =1; break; } if( flag == 0) cout<< not found ; } flag: what for???

1. DOĞRUSAL (SIRALI) ARAMA int lsearch(int list[],int n,int element) { int i, find= -1; } for(i=0;i<n;i++) if( list[i] == element) return find; {find =i; break;} Farklı bir flag kullanımı average time: O(n)

2. İKİLİ ARAMA İlk olarak liste sıralanır Biz aranan elemanı listenin ortasındaki elemanla karşılaştırırız. Eğer bir eşleşme bulunursa, arama başarıyla sonlanır. Aksi takdirde, biz aranan eleman ile ortadaki elemanın durumuna göre listenin sağ tarafında veya sol tarafında aramaya devam ederiz.

Baba? Eat?

void bsearch(int list[],int n,int element) { int l,u,m, flag = 0; l = 0; u = n-1; while(l <= u) { m = (l+u)/2; if( list[m] == element) {cout<<"found:"<<m; flag =1; break;} } else if(list[m] < element) l = m+1; else u = m-1; } if( flag == 0) cout<<"not found"; average time: O(log 2 n)

İKİLİ ARAMA: Yineleme int Search (int list[], int key, int left, int right) { if (left <= right) { int middle = (left + right)/2; if (key == list[middle]) return middle; else if (key < list[middle]) return Search(list,key,left,middle-1); else return Search(list,key,middle+1,right); } return -1; }

3. ALGORİTMA KARMAŞIKLIĞI Bilgisayar biliminde, algoritmaların kalitesini ölçmek önemlidir, özellikle algoritmaların ihtiyaç duyduğu kaynaklar bakımından Kaynaklar: zaman veya bellek alanı Aynı işi yapan farklı algoritmalar daha az veya daha fazla zamana, belleğe veya emeğe ihtiyaç duyabilirler. Bu analizin güçlü bir matematiksel geri planı vardır. Bir algoritmanın kalitesini bulma yolu genellikle Asymptotic Notation veya Big O olarak adlandırılır.

3. ALGORİTMA KARMAŞIKLIĞI Genellikle olarak yazılır Polinom zamanlı algoritmalar, O(1) --- sabit zamanlı --- problem boyutuna bağlı olarak zaman değişmez. O(n) --- doğrusal zamanlı --- problem boyutu büyüdükçe zaman doğrusal olarak artar. O(n 2 ) --- ikinci dereceden zaman --- problem boyutunun karesi hızında problem karmaşıklığı artar. Big O notasyonu kullanılırken en büyük karmaşıklık problemin karmaşıklığını verir. Örnek; O(3n 2 + 3n + 7) = O(n 2 ) Alt-doğrusal zamanlı algoritmalar O(logn) logaritmik zaman Süper polinomsal zamanlı algoritmalar O(n!) O(2 n )

3. ALGORİTMA KARMAŞIKLIĞI Örnek1: bir algoritmanın karmaşıklığı void f ( int a[], int n ) { int i; cout<< "N = << n; for ( i = 0; i < n; i++ ) cout<<a[i]; printf ( "n" ); } 2 * O(1)? + O(N) O(N)?

3. ALGORİTMA KARMAŞIKLIĞI Örnek2: bir algoritmanın karmaşıklığı void f ( int a[], int n ) { int i; cout<< "N = << n; // O(1) for ( i = 0; i < n; i++ ) for (int j=0;j<n;j++) cout<<a[i]<<a[j]; // O(N 2 ) 2 * O(1) + O(N)+O(N? 2 ) } for ( i = 0; i < n; i++ ) cout<<a[i]; // O(N) printf ( "n" ); // O(1) O(N2)?

3. ALGORİTMA KARMAŞIKLIĞI Doğrusal arama O(n). İkili arama O(log 2 N)

Hafta4: (Kısım4) 20 puanlık test Küçük bir program yazın Bir dizinin eleman sayısını girin Dizinin elemanlarını girin Diziyi ekranda gösterin Bir değer alın. Doğrusal aramayı kullanarak ilk eşleşmenin pozisyonunu bulun enterarray, displayarray, linearfind fonksiyonlarını kullanarak bu işlemi yapın.

Hafta 4: (Kısım 4) SIRALAMA TEKNİKLERİ Neden? İkili aramayı kullanırız Bazı işlemleri daha hızlı yapar SORTING

SIRALAMA TEKNİKLERİ Verilen n adet elemanın bir kümesi Bir dizi, kelimeler kümesi veya benzeri olabilir Varsayım elemanlara erişim için bir sıra vardır Hedef elemanları artan sırada bir sırada düzenleme Başlangıç 1 23 2 56 9 8 10 100 Sonuç 1 2 8 9 10 23 56 100

SIRALAMA TEKNİKLERİ Bubble sort, Insertion sort, Selection sort, Quick sort, Heap sort, Merge sort, Exchange sort Çalışılacak sıralama teknikleri Bubble sort Insertion sort Selection sort Exchange sort Quick sort

SIRALAMA TEKNİKLERİ Average Worst Bubble sort O(n 2 ) O(n 2 ) Exchange sort Insertion sort O(n 2 ) O(n 2 ) Selection sort O(n 2 ) O(n 2 ) Quick sort O(nlogn) O(n 2 )

1.Bubble sort: ana fikir Listenin elemanlarını komşu elemanların çiftlerini kullanarak düzenler. i th ve (i+1) th eleman bir çift oluşturur. Eğer sıra artan ise, biz listenin elemanlarını yer değiştiririz. Bu, geriye kalan n-1 elemanın en büyüğünü n-1 pozisyonuna getirecektir.

1.Bubble sort: idea Why it is called Bubble? 3 7 5 2 4 compare 3 and 7 ; 7 is > 3 so advance 3 5 7 2 4 compare 7 and 5, 7 > 5 so swap them 3 5 2 7 4 compare 7 and 2, 7 >4 so swap them 3 5 2 4 7 compare 7 and 4, 7 >4 so swap them End of pass 1; notice that 7 is in the right place

2.Bubble sort: ana fikir En basit sıralama algoritması Ana fikir: 1.flag = false 2.Diziyi hareket ettir ve elemanları ikili olarak karşılaştır 1.1 If E1 E2 - OK 1.2 If E1 > E2 then Switch(E1, E2) and set flag = true 3. If flag = true goto 1. İşlem tamam.

1.Bubble sort: algoritmanın fikri void bubblesort (Array S, length n) { boolean issorted = false; while(!issorted) { issorted = true; for(i = 0; i<n; i++) if(s[i] > S[i+1]) { swap(s[i],s[i+1];) issorted = false; } }

1.Bubble sort: gerçekleştirim void bsort(int list[], int n) { int count,j; for(count=0;count<n-1;count++) for(j=0;j<n-1-count;j++) if(list[j] > list[j+1]) swap(list[j],list[j+1]); }

2. Exchange Sorting Method : veri n-1 kere taranır, her bir taramada komşu elemanlar karşılaştırılır, gerekli ise n-1 karşılaştırma yapılır O(n 2 )

2. Exchange Sorting void Exchange_sort(int arr[], int n) { int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(arr[i] > arr[j]) swap(arr[i],arr[j]); }

2. Exchange Sorting Notlar: Her başarılı taramada, bir tane daha az karşılaştırma yapılır, çünkü son eleman her tarama sonunda yerini bulur Eğer bir taramada hiç değişiklik olmazsa işlem sona erer Performansını artırmak için bazı çalışmalar yapılmış olmakla birlikte hala karmaşıklığı O(n 2 ) dir.