Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.

Slides:



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

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Ayrık Yapılar Algoritma Analizi.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 2: Program Denetimi
Sorting Methods Basics of Sorting Elementary Sorting Algorithms
4. KONTROL VE DÖNGÜ KOMUTLARI
Karar ifadeleri ve Döngüler
Özyineli Sıralama Algoritmaları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
DÖNGÜLER.
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
5. HAFTA
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
Kontrol Yapıları ve Döngüler
Çoklu dallanma seçimi: switch
BM-103 Programlamaya Giriş Güz 2014 (8. Sunu)
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
C PROGRAMLAMA DİZİLER (ARRAYS).
Ders İçeriği Liste Soyut veri yapısı (ADT)
DÖNGÜLER.
C#’TA DÖNGÜLER onbirc.com/133.
4. KONTROL VE DÖNGÜ KOMUTLARI
Python Aslı Ergün.
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.
DÖNGÜ DEYİMLERİ Programın belirli bir kesiminin birden fazla tekrarlanması işlemine DÖNGÜ denir. Bir değişken belirli bir değerden başlayıp, son değeri.
Akış Kontrolü ve Döngüler
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
BMS-301 Kabuk Programlama Güz 2015 (6. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
3. HAFTA 3. Hafta.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
YAPISAL PROGRAMLAMA KAVRAMI
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
Chapter 7 Space and Time Tradeoffs Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Algoritma Analizi Algoritma Algoritma bir problemi çözmek için izlenen komutlar kümesidir. Verilen bir problemin birden fazla çözümü dolayısıyla.
ALGORİTMA KARMAŞIKLIĞI
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 10 Dinamik Programlama ve Açgözlü Yaklaşım Soruları-2.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
C Sharp 9. hafta - dIZILER.
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
Veri Yapıları ve Algoritmalar
Çizge Algoritmalari 6. ders.
İleri Algoritma Analizi
İleri Algoritma Analizi
Excel’de VBA Programlama (Visual Basic Application)
Prof. Dr. Şahin EMRAH Algoritmalar I
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
YER DEĞİŞTİRME VE DEĞER DÖNÜŞTÜRME ÖZELLİĞİNE SAHİP GÖRÜNTÜ ŞİFRELEME ALGORİTMALARININ ANALİZİ Erdal GÜVENOĞLU Nurşen SUÇSUZ 
Bölüm 2: Program Denetimi
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritma Analizi
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Chapter 4 Divide-and-Conquer
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
Sunum transkripti:

Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer. Sol elimiz boş ve masadaki kartlar resimleri aşağıda (tersyüz) olarak başlarız. Masadan bir kart alırız ve onu sol elimizde uygun yere yerleştiririz. Elimizdeki kartların herbiriyle sağdan sola karşılaştırırız. Sol elimizde tuttuğumuz kartlar sıralıdır. Bu kartlar orijinal olarak masadaki destenin en üstündeki kartlar idi.

Insertion Sort 12’yi eklemek için önce 36’yı ve daha sonra 242ü sağa kaydırmamız gerekmektedir. 6 10 24 36 12

Insertion Sort 6 10 24 36 12

Insertion Sort 24 36 10 6 12

Insertion Sort 5 2 4 6 1 3 Giriş Dizisi 5 2 4 6 1 3 Her adımda,dizi iki alt diziye bölünür. Sol alt dizi Sağ alt dizi sırasız Sıralı

Insertion Sort

INSERTION-SORT Alg.: INSERTION-SORT(A) for j ← 2 to n do key ← A[ j ] A[ j ] sıralı A[1 . . j -1] dizisine ekle i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← key Insertion sort elemanları dizi içinde sıralar. a8 a7 a6 a5 a4 a3 a2 a1 1 2 3 4 5 6 7 8 key

Insertion Sort Döngü İçerikleri Alg.: INSERTION-SORT(A) for j ← 2 to n do key ← A[ j ] A[ j ]’yi sıralı A[1 . . j -1] dizisine ekle i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← key Invariant: for döngüsünün başlangıcında A[1 . . j-1] içerisindeki elemanlar sıralıdır.

Döngülerin çalışması Döngü değişkenlerinin sınanması «induction» gibi çalışır. Döngü Başlangıcı (base case): Döngünün ilk iterasyonundan önce doğru Emin olma (inductive step): Dönügünün bir itrasyonundan önce Doğru ise sonraki iterasyonundan önce doğru kalır. Sonlanma (Termination): Döngü sonlandığında, Değişmezler algoritmanın doğru olduğunu göstermeye yardım eden yararlı özellikler verir.

Döngü süreçleri Başlangıç: İlk iterasyondan hemen önce,j = 2: A[1 . . j-1] = A[1], alt dizisi (1 elemanlı bir dizi doğal olarak sıralıdır.)

Döngü süreçleri Maintenance: İç while döngüsü , key=A[j] değeri uygun pozisyona yerleşinceye kadar A[j -1], A[j -2], A[j -3],… biçiminde hareket eder Bu noktada, key değeri uygun pozisyona yerleşir.

Döngü süreçleri Sonlanma: Dıştaki for döngüsü j = n + 1  j-1 = n olduğunda biter. n, loop invariant içindeki j-1 ile yerdeğiştirir. A[1 . . n] alt dizisi orijinal A[1 . . n] dizisini (sıralı) içerir. j - 1 j

Insertion Sort INSERTION-SORT(A) cost times for j ← 2 to n i ← j - 1 do key ← A[ j ] A[ j ]’yi sıralı A[1 . . j -1] dizisine ekle i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← key cost times c1 n c2 n-1 0 n-1 c4 n-1 c5 c6 c7 c8 n-1 7 tj: j. İterasyonda çalıştırılan while ifadesi sayısı

En İyi Durum Analizi (Best Case Analysis) Dizi zaten sıralıdır. while döngüsü testi ilk çalıştığında A[i] ≤key olur (i=j-1) tj = 1 T(n) = c1n + c2(n -1) + c4(n -1) + c5(n -1) + c8(n-1) = (c1 + c2 + c4 + c5 + c8)n + (c2 + c4 + c5 + c8) = an + b = (n) “while i > 0 and A[i] > key”

En Kötü Durum Analizi (Worst Case Analysis) “while i > 0 and A[i] > key” Dizi tersten sıralıdır. while döngüsü testinde her zaman A[i] > key olacaktır. Key j’nci pozisyonun solundaki bütün elemanlarla karşılaştırılır (j. elmanı karşılaştırj-1 eleman ile  tj = j ) Karesel bir fonksiyon T(n) = (n2) Büyüme derecesi:n2 we have:

Insertion Sort algoritmasındaki Karşılaştırma ve Yer değiştirmeler for j ← 2 to n do key ← A[ j ] Insert A[ j ]’yi sıralı diziye A[1 . . j -1] i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← key cost times c1 n c2 n-1 0 n-1 c4 n-1 c5 c6 c7 c8 n-1  n2/2 karşılaştırma  n2/2 yerdeğiştirme

Genel değerlendirme Avantaj: Dezavantaj: Zaten sırıla bir dizi için iyi bir çalışma zamanına sahiptir: (n) Dezavantaj: Ortalama ve en kötü durumlarda çalışma zamanı (n2) olur.  n2/2 karşılaştırma ve yer değiştirme

Bubble Sort Algoritma fikri: Dizinin elemanları üzerinden tekrar tekrar geçilir. Sırasız komşu elemanlar yer değiştirilir. İşletimi kolaydır,Fakat Insertion sort algoritmasından daha yavaştır. i 1 2 3 n 1 3 2 9 6 4 8 j

Example 1 3 2 9 6 4 8 i = 1 j 3 2 9 6 4 8 1 i = 2 j 3 1 2 9 6 4 8 i = 1 j 3 9 6 4 8 2 1 i = 3 j 3 2 1 9 6 4 8 i = 1 j 9 6 4 8 3 2 1 i = 4 j 3 2 9 1 6 4 8 i = 1 j 9 6 8 4 3 2 1 i = 5 j 3 2 9 6 1 4 8 i = 1 j 9 8 6 4 3 2 1 i = 6 j 3 2 9 6 4 1 8 i = 1 j 9 8 6 4 3 2 1 i = 7 j 3 2 9 6 4 8 1 i = 1 j

Bubble Sort Alg.: BUBBLESORT(A) for i  1 to length[A] do for j  length[A] downto i + 1 do if A[j] < A[j -1] then exchange A[j]  A[j-1] i 1 3 2 9 6 4 8 i = 1 j

Bubble-Sort Çalışma Zamanı Alg.: BUBBLESORT(A) for i  1 to length[A] do for j  length[A] downto i + 1 do if A[j] < A[j -1] then exchange A[j]  A[j-1] c1 c2 c3 Karşılaştırma:  n2/2 c4 Yerdeğiştirme: n2/2 T(n) = c1(n+1) + c2 c3 c4 = (n) + (c2 + c2 + c4) Thus,T(n) = (n2)

Selection Sort Algoritmanın çalışması: Dezavantaj: Dizinin en küçük elemanını bul Bu en küçük elemanı birinci pozisyondaki elemanla yer değiştir. İkinci en küçük elemanı bul ve bunu ikinci pozisyondaki elemanla yer değiştir. Dizi sıralanıncaya kadar bu işlemlere devam et. Dezavantaj: Çalışma zamanı dizinin düzenine çok az bağlı. Eleman sayısı arttıkça her durumda çalışma zamanı hızlı bir artış gösterecektir.

Example 1 3 2 9 6 4 8 8 6 9 4 3 2 1 8 3 2 9 6 4 1 8 9 6 4 3 2 1 8 3 4 9 6 2 1 9 8 6 4 3 2 1 8 6 4 9 3 2 1 9 8 6 4 3 2 1

Selection Sort Alg.: SELECTION-SORT(A) n ← length[A] for j ← 1 to n - 1 do smallest ← j for i ← j + 1 to n do if A[i] < A[smallest] then smallest ← i exchange A[j] ↔ A[smallest] 1 3 2 9 6 4 8

Selection Sort Algoritmasının Analizi Alg.: SELECTION-SORT(A) n ← length[A] for j ← 1 to n - 1 do ek ← j for i ← j + 1 to n do if A[i] < A[ek] then ek ← i exchange A[j] ↔ A[ek] cost times c1 1 c2 n c3 n-1 c4 c5 c6 c7 n-1 n2/2 karşılaştırma n yerdeğiştirme