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

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

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

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

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

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

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

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

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

Algoritmalar. DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen in algoritması

2.Hafta Algoritmaların Analizi. Araya Yerleştirme Sırlaması (Insert Sort) Birleştirme Sıralaması (Merge Sort ) Yinelemeler

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

Alıştırma 1: Yineleme

Dr. Fatih AY Tel: fatihay@fatihay.net

5.Hafta Alt Sınırları Sıralama Doğrusal-Zaman (linear time) Sıralaması (devam)

VERİ YAPILARI DATA STRUCTURE GİRİŞ

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

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

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İ

Problem Set 1 Çözümler

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

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

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

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

YZM 2116 Veri Yapıları

Algoritmalara Giriş 6.046J/18.401J DERS 2

YZM 2116 Veri Yapıları

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

p sayısının pozitif bölenlerinin sayısı 14 olacak şekilde kaç p asal sayısı bulunur?

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

( ) (, ) Kombinasyon. Tanım: r n olmak üzere n elemanlı bir kümenin r elemanlı her alt kümesine bu n elemanın r li kombinasyonu denir.

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

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Azalt ve Fethet Algoritmaları

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

Merge Sort Bireşen Sıralama

GENETİK ALGORİTMA ÖZNUR CENGİZ HİLAL KOCA

Algoritma Nedir? Algoritma

4. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#9: AÇGÖZLÜ ALGORİTMALAR

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir?

10.Konu Tam sayıların inşası

Algoritmalar. Çizge Algoritmaları. Bahar 2017 Doç. Dr. Suat Özdemir 1

Web Madenciliği (Web Mining)

Dizi Antenler. Özdeş anten elemanlarından oluşan bir dizi antenin ışıma diyagramını belirleyen faktörler şunlardır.

Algoritmalara Giriş 6.046J/18.401J

BÖLÜNEBĐLME KURALLARI

Fonksiyon Optimizasyonunda Genetik Algoritmalar

YZM 5257 YAPAY ZEKA VE UZMAN SİSTEMLER DERS#6: GENETİK ALGORİTMALAR

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

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

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

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

VERİ YAPILARI VE PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA II

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

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

BMT207 VERİ YAPILARI DATA STRUCTURE

ALGORİTMA VE PROGRAMLAMA I

PERMÜTASYON, KOMBİNASYON. Örnek: Örnek: Örnek:

127 - Twoing Algoritması ile Sınıflandırma Kalp Hastalığı Uygulaması MEHMET AKİF ERSOY ÜNİVERSİTESİ İLHAN UYSAL MEHMET BİLEN SAMİ ULUKUŞ

Eğitim seti (training set) sınıflandırma modelinin elde edileceği kayıtları içerir

Algoritmalara Giriş. Prof. Erik Demaine. September 26, 2005 Copyright Erik D. Demaine and Charles E. Leiserson L5.1

Algoritmalar ve Karmaşıklık

Veri Yapıları Laboratuvarı

Yrd. Doç. Dr. Caner ÖZCAN

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

VERİ MADENCİLİĞİ (Karar Ağaçları ile Sınıflandırma) Yrd.Doç.Dr. Kadriye ERGÜN

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

SORULAR. 2. Noktaları adlandırılmamış 6 noktalı kaç ağaç vardır? Çizerek cevaplayınız.

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

Gezgin Satıcı Probleminin İkili Kodlanmış Genetik Algoritmalarla Çözümünde Yeni Bir Yaklaşım. Mehmet Ali Aytekin Tahir Emre Kalaycı

Ara Sınav 1. Algoritmalara Giriş 14 Ekim 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Kitapçık 14

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

HSancak Nesne Tabanlı Programlama I Ders Notları

1. Bölüm: SIRALAMA (PERMÜTASYON) Bölüm: SEÇME (KOMBİNASYON) Bölüm: BİNOM AÇILIMI Bölüm: OLASILIK...25

Pratik Ara Sınav 1 Çözümleri

ELEKTRONİK ÇİZELGE. Hücreleri Biçimlendirme. Formülleri Kullanma. Verileri Sıralama. Grafik Oluşturma 1) HÜCRELERİ BİÇİMLENDİRME

Yrd. Doç. Dr. Caner ÖZCAN

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

10SINIF MATEMATİK. Sayma ve Olasılık Fonksiyonlar

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI Bahar Yarıyılı

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

Yrd. Doç. Dr. A. Burak İNNER

BIP116-H14-1 BTP104-H014-1

Maksimizasyon s.t. İşçilik, saat) (Kil, kg)

Algoritmalara Giriş Ekim 10, 2005 Massachusetts Institute of Technology Professors Erik D. Demaine ve Charles E. Leiserson. Problem Seti 3 Çözümler

6.Hafta Kıyım Fonksiyonu (Hashing), BST. Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

BÖLÜM 5 MERKEZİ EĞİLİM ÖLÇÜLERİ

İleri Diferansiyel Denklemler

13.Konu Reel sayılar

Transkript:

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

Sıralama Problemi ve Analizi Bu bölümde öncelikle bir diğer böl-ve-yönet yöntemine dayalı algoritma olan Quick Sort algoritması üzerinde durulacaktır Merge Sort algoritmasına karşı üstünlükleri gösterilecektir. Sıralama probleminin çözümünde veri yapılarından nasıl faydalanabileceğini görmek açısından Heap veri yapısına bağlı Heap Sort algoritması işlenecektir. Sıralama probleminin çözümünde elde edilebilecek en düşük çalışma zamanını elde edebilmek için doğrusal zamanda çalışan algoritmalar üzerinde durulacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 2

Çabuk Sıralama (Quick Sort) Quick Sort adı ile de bilinir. En kötü çalışma zamanı O n 2 Gerçek hayat problemlerinin çözümünde çok sık kullanılan bir sıralama algoritmasıdır. Bu çalışma zamanı aslında Merge Sort ile elde ettiğimiz O nlgn logaritmik değerinden oldukça yüksektir. Neden Quick Sort algoritması gerçek hayatta çok kullanılmaktadır? Quick Sort algoritmasının oldukça düşük O nlgn ortalama çalışma zamanına sahiptir Merge Sort performansına eşit olan bu değer içinde bulunan ve asimptotik analiz sırasında ihmal edilen sabit değerler de oldukça küçüktür. Algoritma yerinde sıralama yapar. Sıralama için ek yere ihtiyaç duymaz. Merge Sort algoritması sıralama esnasında bölünen dizilerin ayrı bir yere kopyalanmasını gerektirir Bu nedenle özellikle yer kısıtı olan problemlerde Quick Sort algoritması daha çok tercih edilebilmektedir. Bahar 2017 Doç. Dr. Suat Özdemir 3

Çabuk Sıralama (Quick Sort) Merge Sort gibi Quick Sort algoritması da böl-ve-yönet metodolojisi üzerine kurgulanmıştır. Algoritmanın en çok zaman alan temel işlemi sıralanacak olan diziyi ikiye bölen Partition (Böl) fonksiyonudur. Merge Sort da en çok zaman alan işlemin birleştirme işini yapan Merge fonksiyonuydu. Quick Sort algoritmasının üç temel basamağı aşağıda verilmiştir. Algoritma ile A b s formatında verilen bir diziyi sıralamaktadır. Böl: A b s dizisini A b r 1 ve A r + 1 s gibi iki alt diziye böl. Öyle ki A b r 1 alt dizisindeki her eleman A r den küçük veya eşit ve A r + 1 s alt dizisindeki her bir eleman da A r den büyük olsun. İndeks r değerini Partition fonksiyonunu kullanarak hesapla. Yönet: A b r 1 ve A r + 1 s alt dizilerini Quick Sort algoritmasını özyineli şekilde çağırarak sırala. Birleştir: Alt diziler yerinde sıralanmaktadır bu nedenle birleştirme için herhangi bir işlem yapılmasına gerek yoktur. A b s dizisi yerinde küçükten büyüğe sıralanmıştır. Bahar 2017 Doç. Dr. Suat Özdemir 4

Çabuk Sıralama (Quick Sort) Algoritma girdi olarak A dizisi ve A dizinin başlangıç ve bitiş indeks değerlerini almaktadır. n elemanlı A dizisini sıralamak için algoritmanın Quick Sort (A,1, n) şeklinde çağrılması yeterli olacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 5

Dizinin bölünmesi (Partition) Quick Sort algoritmasının temel fonksiyonu dizinin ikiye bölünmesi işlemidir. Partition işlemi öncelikle sıralanacak dizi içerisinde bir pivot eleman seçer ve diziyi bu pivot elemandan küçük değerler solda büyük değerler sağda kalacak şekilde yeniden organize ederek ikiye böler. Pivot eleman en soldaki, en sağdaki, ortadaki ya da rastgele bir eleman olarak seçilebilir. Bu ders kapsamında pivot eleman olarak dizinin en sağındaki eleman kullanılacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 6

Dizinin bölünmesi (Partition) Bahar 2017 Doç. Dr. Suat Özdemir 7

Dizinin bölünmesi (Partition) A dizisinin en sağındaki eleman pivot olarak seçilmekte j indeksi ile dizinin en solundan başlamak üzere tüm elamanlar ile karşılaştırılmaktadır. A[ j ] pivot şartı sağlandığında j indeksinin gösterdiği değer dizinin sol kısmına alınmaktadır. Bu işlem dizinin tüm elemanları için yapıldığında pivot değerinden küçükler dizinin sol tarafında büyükler ise sağ tarafında kalmaktadır. Pivot eleman ise hala dizinin en sağında yer alır. 7. Adımda gerçekleştirilen yer değiştirme işlemi ile pivot değer kendinden büyük değerlerin en solundaki değer ile yer değiştir ve fonksiyon pivot değerin indeks değerini yani dizinin ikiye bölüneceği değeri döndürür. Bahar 2017 Doç. Dr. Suat Özdemir 8

Örnek Bahar 2017 Doç. Dr. Suat Özdemir 9

Örnek Bahar 2017 Doç. Dr. Suat Özdemir 10

Örnek Bahar 2017 Doç. Dr. Suat Özdemir 11

Örnek Tüm elamanlar pivot ile karşılaştırılmıştır. Partition işleminin tamamlanması için son olarak pivot elemanın yer değiştirmesi gerekmektedir (Adım 7.) Bahar 2017 Doç. Dr. Suat Özdemir 12

Partition Örnek 2 2 8 7 p 1 3 5 6 4 r Bahar 2017 Doç. Dr. Suat Özdemir 13

Partition Örnek 2 i j 2 8 7 p 1 3 5 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 14

Partition Örnek 2 i j 2 8 7 p 1 3 5 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 15

Partition Örnek 2 i j 2 8 7 p 1 3 5 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 16

Partition Örnek 2 i j 2 8 7 p 1 3 5 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 17

Partition Örnek 2 i 2 8 7 p j 1 3 5 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 18

Partition Örnek 2 i j 2 1 7 8 3 5 p 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 19

Partition Örnek 2 i j 2 1 3 8 7 5 p 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 20

Partition Örnek 2 2 1 3 8 7 5 p i j 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 21

Partition Örnek 2 2 1 3 8 7 5 p i j 6 4 r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 22

Partition Örnek 2 i 2 1 3 4 7 5 6 8 p r pivot: 4 Bahar 2017 Doç. Dr. Suat Özdemir 23

Quick Sort Algoritmasının Performansı Quick Sort algoritması Partition fonksiyonunu alt dizileri bölmek için de kullanır ve kendisini özyineli bir şekilde çağırarak diziyi yerinde sıralar. Yukarıda belirtildiği üzere algoritmanın çalışma performansını belirleyen Partition fonksiyonudur. Partition fonksiyonun performansı ise yapılan bölünmenin ne kadar dengeli olduğuna bağlıdır. Partition fonksiyonu ile elde edilebilecek en iyi bölünme sol ve sağ alt dizilerin büyüklük olarak birbirine eşit olması durumudur. Bu durumda algoritmanın çalışma zamanı Merge Sort a eşit olur. Bahar 2017 Doç. Dr. Suat Özdemir 24

Quick Sort Algoritmasının Performansı En kötü bölünme ise sağ ya da sol alt dizide hiç eleman bulunmamasıdır ki, bu durumda Quick Sort algoritmasının çalışma zamanı Insertion Sort a eşit olur. Bölünme pivot değerine göre yapıldığı için, pivot değerinin nasıl seçildiği algoritma performansı üzerinde doğrudan bir etkiye sahiptir. Sürekli en sondaki (ya da baştaki) değeri seçmek her zaman iyi bir bölünmeye neden olmayabilir. Sıralanacak olan dizinin ortanca (median) değerinin pivot olarak seçilmesi her zaman dengeli bir bölünme sağlar. Ancak ortanca değerin bulunması özellikle büyük boyutlu diziler için sorun oluşturur ve algoritmanın çalışma zamanını artırır. Bahar 2017 Doç. Dr. Suat Özdemir 25

Quick Sort Algoritmasının Performansı Pratik bir çözüm olarak dizi içinde bazı elemanlar seçilerek bu değerlerin ortancası bulunarak pivot eleman olarak kullanılabilir. Örneğin dizinin ilk üç değerinin ortancası ya da baş, orta ve son değerlerin ortancası bulunarak pivot değer olarak seçilebilir. Bu pratik çözüm ile algoritmanın çalışma performansının Merge Sort a eşit olması sağlanabilir. Buna ilişkin bir örnek aşağıda verilmiştir. Bahar 2017 Doç. Dr. Suat Özdemir 26

Örnek: Quick Sort Pivot elemanın seçilmesi Yukarıdaki dizi için algoritmada Partition fonksiyonu çağrıldığında, eğer en son eleman pivot olarak seçilirse bölünme aşağıdaki gibi dengesiz olacaktır. Bunun yerine dizinin ilk üç elemanı dikkate alınır ve bunların ortanca değeri kullanılırsa daha dengeli bir bölünme elde edilebileceği görülür. İlk üç eleman olan 9, 20 ve 16 değerlerinin ortanca değeri 16 değeridir. Bahar 2017 Doç. Dr. Suat Özdemir 27

Örnek: Quick Sort Pivot elemanın seçilmesi Bahar 2017 Doç. Dr. Suat Özdemir 28

En Kötü Çalışma Zamanı Analizi Quick Sort algoritmasında en kötü çalışma zamanı durumu bölünme sonucunda oluşan alt dizilerden birinin (n 1) diğerinin de 0 elemanlı olması durumudur Bölünme sonucunda oluşan bu dengesiz durumun özyineli olarak Quick Sort algoritmasının her çağrılışında gerçekleştiğini kabul edelim. Dengesiz bölünme aslında yukarıda pivot elemanın seçilmesi örneğinde olduğu gibi dizi içerisindeki en büyük elemanın pivot olarak seçilmesi durumda oluşur. Dizi zaten sıralı ise sürekli en sondaki eleman pivot olarak seçileceği için Partition fonksiyonunun her çağrılışında en kötü bölünme gerçekleşir. Bahar 2017 Doç. Dr. Suat Özdemir 29

En Kötü Çalışma Zamanı Analizi Basit Maliyet analizi: c[n + (n 1) + (n 2) + + 2] = c θ(n 2 ) = θ(n 2 ) Bahar 2017 Doç. Dr. Suat Özdemir 30

En Kötü Çalışma Zamanı Analizi Formal analiz: Partition işlemi bu durumda her elemanın pivot elemanla karşılaştırılması (Adım 4.) ve swap işlemlerini gerektirir. Bu işlemler n defa yapılacağı için bölünme için gerekli olan zaman θ(n) olacaktır. Alt diziler için maliyete bakacak olursak; 0 elemanlı alt dizi için çağrılacak Quick Sort T 0 = θ(1) olacaktır. Diğer taraftaki alt dizi (n-1) elemanlıdır ve gerekli çalışma zamanı T n 1 olarak ifade edilir. Bu durumda en kötü çalışma zamanı analizi için algoritmanın tekrarlı ifadesi T n = T n 1 + T 0 + θ(n) Bahar 2017 Doç. Dr. Suat Özdemir 31

En Kötü Çalışma Zamanı Analizi Bu ifade tekrarlı ifade ağacına yerleştirildiğinde çalışma zamanının T n = θ n 2 olduğu rahatlıkla görülür. Bahar 2017 Doç. Dr. Suat Özdemir 32

En İyi Çalışma Zamanı Analizi En iyi çalışma zamanı durumu ise oluşan alt dizilerin her ikisinin de n/2 boyutunda olması durumudur. Sıralanacak dizi tek sayıda değerden oluşursa her iki alt dizide n/2 boyutunda olur, eğer çift sayıda elemandan oluşan bir dizi bölünüyorsa bir alt dizi n/2 diğer (n/2)-1 boyutunda olacaktır. Bu durumda tekrarlı ifade T n = 2T n/2 + θ(n) olur. Bu tekrarlı ifade ise Master Metot 2. durum ile çözülebilir ve elde edilen asimptotik ifade Merge Sort algoritmasına eşit olan T n = O(nlgn) ifadesi olacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 33

Ortalama Çalışma Zamanı Analizi Quick Sort algoritmasının çalışma zamanı en kötü durumda Insertion Sort algoritmasına eşit olmasına rağmen gerçek hayatta çok fazla kullanılır olduğu ifade edilmişti. Bunun nedeni en kötü çalışma zamanını oluşturacak durumun kolay kolay ortaya çıkmamasıdır (her zaman en büyük değerin pivot eleman olarak seçilmesi durumu). Ayrıca Quick Sort algoritmasının performansı bölünme en kötüye çok yakın dahi olsa yine en iyi çalışma zamanı performansına yakındır. Bahar 2017 Doç. Dr. Suat Özdemir 34

Ortalama Çalışma Zamanı Analizi Ortalama çalışma zamanı bölünmelerin ne en iyi ne de en kötü olduğu durumda ortaya çıkar. Biz örneğimizde bölünmelerin en kötüye daha yakın bölünmeler olduğunu varsayacağız. Örneğin Partition fonksiyonunun her zaman 9 a 1 oranında bölünme yaptığını varsayalım. Bölme işlemi için cn gibi sabit bir zaman harcandığını kabul edelim. Bu durumda oluşan tekrarlı ifade T n = T 9n/10 + T n/10 + cn Bahar 2017 Doç. Dr. Suat Özdemir 35

Ortalama Çalışma Zamanı Analizi Bu durum için tekrarlı ifade ağacı çizilirse elde edilen asimptotik notasyonun T(n) = O nlgn olduğu görülecektir. Literatürde yapılan çalışmalar gerçek hayatta rastgele bir girdi için bölünmelerin %80 nin 9 a-1 den daha iyi, %20 sinin ise 9 a-1 den daha kötü olduğunu göstermektedir. Bu nedenle Quick Sort algoritmasının performansı ortalama durum için en iyi durum çalışma zamanına eşittir denilebilir. Örneğin pivot elemanın rastgele olarak seçildiği Randomized-Quick Sort algoritmasının performansı da T(n) = O nlgn e eşittir. Bahar 2017 Doç. Dr. Suat Özdemir 36

Ortalama Çalışma Zamanı Analizi Nasıl lgn kullandık? log 10/9 n = log 2n = log 2n = c(log log 2 (10/9) 0.152 2n) Bahar 2017 Doç. Dr. Suat Özdemir 37