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

Benzer belgeler
Algoritmalar. Sıralama Problemi ve Analizi. 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

YZM 2116 Veri Yapıları

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

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

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

YZM 2116 Veri Yapıları

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

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

BIP116-H14-1 BTP104-H014-1

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

Algoritmalar. DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar Kırmızı-siyah ağacın yüksekliği Rotation / Dönme Insertion / araya yerleştirme

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

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

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ü

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

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

Ağaç (Tree) Veri Modeli

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

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

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

Algoritmalar. Kırmızı Siyah Ağaçları Red Black Trees. Bahar 2017 Doç. Dr. Suat Özdemir 1

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

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

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

Algoritmalara Giriş Ekim 17, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Dağıtım 15.

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

Çok Yollu Ağaçlar: B*-Trees B*-Trees

Alıştırma 1: Yineleme

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

Dr. Fatih AY Tel: fatihay@fatihay.net

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

BIL222 Veri Yapıları ve Algoritmalar

Arasınav Örnek Soruları Bahar 2018

6.Hafta Bilinen Probleme İndirgeme Tasarım Yöntemi

Algoritmalara Giriş 6.046J/18.401J

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

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

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

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

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

Pratik Ara Sınav 1 Çözümleri

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Problem Set 1 Çözümler

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

MATLAB. Fen ve Mühendislik Uygulamaları ile. Doç. Dr. M. Akif CEVİZ. MATLAB de Dizi Kavramı

Veri Yapıları Laboratuvarı

Azalt ve Fethet Algoritmaları

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

Merge Sort Bireşen Sıralama

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

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

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

ALGORİTMA VE PROGRAMLAMA I

YZM 2116 Veri Yapıları

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

Internet Programming II

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

VERİ YAPILARI VE PROGRAMLAMA

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

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

Fonksiyon Optimizasyonunda Genetik Algoritmalar

Final Sınavı Soruları Bahar 2018

BMT207 VERİ YAPILARI DATA STRUCTURE

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

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

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

Arama metodlarında temel işlem anahtarları karşılaştırmaktır.

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

Dosya Sıkıştırma (File Compression) Kütük Organizasyonu 1

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

YZM 2116 Veri Yapıları

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

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

Problem Seti 4 Çözümler

Yrd. Doç. Dr. Caner ÖZCAN

Eln 1002 Bilgisayar Programlama II

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

YZM 2116 Veri Yapıları

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

YMT219 VERİ YAPILARI ÖDEV-1

ALGORİTMA VE PROGRAMLAMA I

Final Sınavı Örnek Soruları Bahar 2018

BİLGİSAYAR PROGRAMLAMA DERSİ

YZM 2116 Veri Yapıları

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

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

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

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

VERİ YAPILARI DATA STRUCTURE GİRİŞ

Otomata Teorisi (BIL 2114)

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

Transkript:

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

Heap Sort Heap Sort algoritması Merge Sort ve Insertion Sort algoritmalarının iyi özelliklerini bir arada toplar. Algoritma Insertion Sort gibi yerinde sıralama yaparken Merge Sort gibi O nlgn çalışma zamanını garanti eder. En önemli özelliği ise bir veri yapısından (Heap) faydalanarak sıralama işlemini gerçekleştirmesidir. Bu daha önceki algoritmalarda görmediğimiz bir özellikti. Bahar 2017 Doç. Dr. Suat Özdemir 2

Heap Veri Yapısı İkili (binary) Heap veri yapısı neredeyse tam dolu ikili ağaç olarak gösterilebilecek bir dizidir. Neredeyse dolu tanımının kullanılması sadece yapraklarda boşluk olabileceği anlamına gelir. Bir başka ifade ile ağaç dengelidir. Ağaç üzerindeki her bir düğüm dizinin bir elemanıdır. Ağaç yapraklar hariç tüm seviyelerde doludur, yaprak seviyesinde ise ağaç soldan sağa doğru doldurulur. Bir Heap oluşturan A dizisi iki tane tanımlayıcı niteliğe sahiptir: Dizideki eleman sayısını belirleyen length[a] Heap içerisinde tutulan A dizisine ait elemanların sayısı heap size[a] Bahar 2017 Doç. Dr. Suat Özdemir 3

Heap Veri Yapısı Ağacın kökü A[1] ile ifade edilir. İndeks değeri i olan bir düğümün ebeveyn (Parent), sağ (Right) ve sol (Left) çocukları aşağıdaki gibi bulunur. Çoğu bilgisayarda i/2 ve 2i işlemleri sola ve sağa bit kaydırmaları ile kolayca yapılabildiğinden Heap Sort algoritmasının uygulanması oldukça kolaydır. Kullanılan floor fonksiyonu bölme işlemi sonucunda elde edilen değerin tam sayı kısmını döndürür. Parent (i) return floor(i/2) Left (i) return 2i Right (i) return 2i + 1 Bahar 2017 Doç. Dr. Suat Özdemir 4

Heap Veri Yapısı Max ve Min Heap olmak üzere iki çeşit Heap vardır. Her ikisinde de ağaç üzerindeki kök hariç her düğümün heap property i (heap özelliğini) sağlaması gereklidir. Max Heap te heap özelliği kök hariç tüm düğümlerin şartını sağlamasıdır. A[Parent(i)] A[i] Bu özelliğe göre Heap içindeki herhangi bir düğümün değeri en çok ebeveyni kadar olabilir, bu nedenle kökte bulunan değer dizi içindeki en büyük değerdir. Bahar 2017 Doç. Dr. Suat Özdemir 5

Heap Veri Yapısı Aynı şekilde Min heap de heap özelliği kök hariç tüm düğümlerin A[Parent(i)] A[i] şartını sağlamasıdır. Kökte bulunan değer dizi içindeki en küçük değerdir. Bu derste Heap Sort anlatılırken Max Heap yapısı kullanılacak ve kolaylık açısından sadece Heap olarak adlandırılacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 6

Örnek: Max-Heap İndeks değerlerinin soldan sağa ve yukarıdan aşağı doğru arttığına dikkat ediniz. Ağaç kökünün indeks değeri 1 dir. Tüm düğümler Heap özelliğini sağlamaktadır. Bahar 2017 Doç. Dr. Suat Özdemir 7

Örnek: Max-Heap Aynı Heap dizi olarak da gösterilebilir. Bu dizi kökten başlayarak soldan sağa doğru Heap üzerine yerleştirilebilir. 14 12 7 10 8 6 Heap yapısında ağacın yüksekliği yapraklardan köke ulaşan en uzun yol olarak tanımlanır. Kökün yüksekliği Heap yüksekliği olup n elemanlı dizi için θ(lgn)'dir, bu nedenle heap üzerinde gerçekleştirilecek olan çoğu işlem O(lgn) zamanda bitirilebilir. Diğer Heap özellikleri: Yaprak sayısı: ceiling(n/2) h yüksekliğindeki düğüm sayısı ceiling( n 2 h+1) Bahar 2017 Doç. Dr. Suat Özdemir 8

Heap Özelliğinin Korunması Heapify Ağaç içerisindeki bir düğümün Heap özelliğini bozması durumunda Heapify fonksiyonu kullanılarak durum düzeltilir. Heapify fonksiyonu özelliği bozan düğümün değerini çocuklarından en büyük değere sahip olanı ile yer değiştirir. Bu durum alt ağaçta Heap özelliğinin bozulmasına neden olabilir bu nedenle Heapify fonksiyonu özyineli olarak yapraklara ulaşana kadar tüm çocuklara uygulanır. Bahar 2017 Doç. Dr. Suat Özdemir 9

Heap Özelliğinin Korunması Heapify Aşağıda Heapify fonksiyonun sözde kodu verilmiştir. Heapify fonksiyonu i indeks değerine sahip düğüm için çağrılmaktadır. i indeksli düğüm sol ve sağ çocukları ile karşılaştırılmakta ve en büyük değer belirlenmektedir. Eğer en büyük değer i indeksli düğüm değilse, en büyük değere sahip olan çocuğu ile yer değiştirilerek Heapify fonksiyonu tekrar çağrılmaktadır. Bu şekilde yaprak düğümlere kadar yukarıdan aşağı inilir, bir yaprak düğüm için çocuklarının indeks değerleri heap-size[a] dan büyük olacağı için Heapify fonksiyonu bir daha çağrılmayacak ve işlem sonlanacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 10

Heap Özelliğinin Korunması Heapify Bahar 2017 Doç. Dr. Suat Özdemir 11

Örnek Heapify A dizisinin yerleştirildiği yukarıdaki ağaçta 1 indeksli kök düğümün Heap özelliğini bozduğu görülmektedir. Bu durumda Heapify(A,1) fonksiyonu çağrılarak ağaçta Heap özelliği sağlanabilir. Bahar 2017 Doç. Dr. Suat Özdemir 12

Örnek Heapify Heapify(A,1) çağrıldığında 1 numaralı düğüm çocukları ile karşılaştırılır ve en büyük değer belirlenir. Sol çocuk 12 en büyük olduğu için sözde koddaki enbuyuk değişkeni sol çocuğun indeks değerine eşit olur (Adım 4). Daha sonra 8. Adımda i değişkeni ve enbuyuk değişkeni birbirine eşit olmadıkları için yer değiştirme yapılarak Heapify(A,2) fonksiyonu çağrılır. Bahar 2017 Doç. Dr. Suat Özdemir 13

Örnek Heapify Bahar 2017 Doç. Dr. Suat Özdemir 14

Örnek Heapify Yeni Heap üzerinde Heapify(A,2) çağrıldığında Heap özelliğinin sağlanmadığı görülür ve aynı işlemler yapılarak 2 ve 5 indeksli düğümler arasında yer değiştirme yapılır. Heapify (A,2) çağrıldıktan sonra 10 ve 9 yer değiştirmiş olur. Ağaç artık Heap özelliği göstermektedir. 5 indeks değerine sahip düğüm için Heapify (A,5) çağrılır ancak 5. düğümün çocukları olan 10. ve 11. düğümler sözde kodun 3. ve 6. adımlarında heap-size değerinden büyük olacakları için işlem sonlanır. Bahar 2017 Doç. Dr. Suat Özdemir 15

Heapify fonksiyonunun çalışma zamanı analizi En kötü durumda Heapify fonksiyonu üstteki örnekte olduğu gibi kök düğümden başlayıp yaprakta sonlanabilir. Ağaç yüksekliği kadar Heapify fonksiyonu çağrılmış olur. Heapify fonksiyonun her çalışması sadece bir yer değiştirme işlemi içerdiğinden Θ(1) zaman alır. Bahar 2017 Doç. Dr. Suat Özdemir 16

Heapify fonksiyonunun çalışma zamanı analizi En kötü durumda ağaç sol alt ağaçta 2n/3 ve sağ alt ağaçta n/3 düğüm olacak şekilde bölünür. Bu durumda T(n) = T(2n/3) + θ(1) Master metot 2. durum ile O n log 3 21 lgn = O(lgn) Bu duruma göre en kötü durumda Heapify fonksiyonu Θ(lgn) zaman alacaktır. Bahar 2017 Doç. Dr. Suat Özdemir 17

Heap Oluşturulması Build Heap oluşturma işlemi Build fonksiyonu ile gerçekleştirilir. Heap formatına sokulmak istenen bir A dizisi için Build fonksiyonu Heapify fonksiyonunu A dizisinin yapraklar hariç tüm elemanları için aşağıdan başlayarak çağırır. Yaprak düğümlerin çocuğu olmadığı için zaten Heap özelliği gösterirler. Burada Heap veri yapısının özelliğine göre ağaç içerisindeki elemanların yarısının yapraklarda olacağına dikkat ediniz. En son kök eleman için Heapify fonksiyonu çağrıldığında Heap oluşmuş olur. Aşağıda Build fonksiyonunun sözde kodu verilmiştir. Bahar 2017 Doç. Dr. Suat Özdemir 18

Heap Oluşturulması Build Bahar 2017 Doç. Dr. Suat Özdemir 19

Örnek - Build Aşağıda verilen A dizisinde bir Heap oluşturulmak isteniyor. 11 21 9 18 10 16 19 Bahar 2017 Doç. Dr. Suat Özdemir 20

Örnek - Build A dizisi aşağıdaki gibi ağaca yerleştirilirse Heap özelliğini göstermediği görülür. Bu diziden Heap oluşturmak için Build fonksiyonu 3 indeksli elemandan başlamak üzere kök elemana kadar Heapify fonksiyonunu çağırır (Adım 2 de floor(7/2)=3). Bahar 2017 Doç. Dr. Suat Özdemir 21

Örnek - Build Heapify(A,3) çağrıldığında ağaçtaki değişiklik. (9 ve 19 yer değiştirdi) Bahar 2017 Doç. Dr. Suat Özdemir 22

Örnek - Build Heapify(A,2) çağrıldığında ağaçtaki değişiklik. (21 çocuklarından büyük olduğu için yer değiştirme olmadı) Bahar 2017 Doç. Dr. Suat Özdemir 23

Örnek - Build Heapify(A,1) çağrıldığında ağaçtaki değişiklikler. (Önce 11 ve 21 yer değiştirir, 11 Heap özelliğini bozacağı için 18 ile yer değiştirir) Bahar 2017 Doç. Dr. Suat Özdemir 24

Örnek - Build Kök düğüm için Heapify fonksiyonu çağrıldıktan sonra tüm ağaç artık Heap özelliği göstermektedir. Bahar 2017 Doç. Dr. Suat Özdemir 25

Build fonksiyonunun çalışma zamanı analizi Build fonksiyonunun çalışma zamanı nedir? Düğümlerin yarısı için çağrılıyor Heapify kullanıyor? Bahar 2017 Doç. Dr. Suat Özdemir 26

Build fonksiyonunun çalışma zamanı analizi Basit bir analiz ile Build fonksiyonunun O(nlgn) zamanda çalıştığı görülebilir (n/2 defa Heapify fonksiyonun çalışması gerekmektedir). Ancak daha detaylı bir analiz ile fonksiyonun çok daha düşük çalışma zamanına sahip olduğu da gösterilebilir. Buradaki önemli nokta çağrılan Heapify fonksiyonlarının çoğunluğunun yüksekliği fazla olmayan düğümler için olmasıdır. Bahar 2017 Doç. Dr. Suat Özdemir 27

Build fonksiyonunun çalışma zamanı analizi Daha önceki bölümlerde n belirtildiği üzere bir Heap te h yüksekliğindeki düğüm sayısı en fazla 2h+1 olabilir. Buna göre her yükseklikte çağrılan Heapify fonksiyonlarını ayrı ayrı düşünerek çalışma zamanını hesaplarsak aşağıdaki ifadeyi elde etmiş oluruz: lgn h=0 n lgn 2 h+1 O h = O(n h=0 h 2 h+1 ) Bu ifade Stirling s yaklaşımına göre sadeleştirilirse çalışma zamanı olarak O(n) elde edilir. Bahar 2017 Doç. Dr. Suat Özdemir 28

Build fonksiyonunun çalışma zamanı analizi Stirling's approximation n x nx ( 1 x) n0 2 Eğer x=1/2 ise (1/2) n =1/(2 n ) olur. Bu nedenle: n0 h 1 2 h 1/ 2 (1 1/ 2) 2 2 T ( n) O lgn h1 n 2 h h On h1 h 2 h O( n2) O( n) Bahar 2017 Doç. Dr. Suat Özdemir 29

Heap Sort Sıralanacak bir A dizisi için Heap Sort algoritması Build fonksiyonu yardımıyla Heap oluşturur. Oluşan Heap te kökte yer alan elemanın en büyük değer olduğu bilindiğinden bu değer en son yaprak (en büyük indeks değerli yaprak) ile yer değiştirilir. Son elaman Heap dışına alınır ve kök için Heapify fonksiyonu çağrılarak Heap özelliği korunur. Yeni ağaç için de aynı işlemler yapılarak sıralama işlemi tamamlanmış olur. Bahar 2017 Doç. Dr. Suat Özdemir 30

Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 31

Örnek: Heap Sort Verilen bir A dizisinden aşağıdaki Heap elde edilmiş olsun. Her aşamada kök eleman en sondaki eleman ile yer değiştirilir, son elaman Heap dışına alınır ve Heap özelliği korunur. Bahar 2017 Doç. Dr. Suat Özdemir 32

Örnek: Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 33

Bahar 2017 Doç. Dr. Suat Özdemir 34

Bahar 2017 Doç. Dr. Suat Özdemir 35

Bahar 2017 Doç. Dr. Suat Özdemir 36

En son kök eleman da sıralanmış dizinin en başına eklenir ve sıralı dizi elde edilmiş olur. Bahar 2017 Doç. Dr. Suat Özdemir 37

Heap Sort Algoritması Çalışma Zamanı Analizi Heapify ve Build fonksiyonlarının çalışma zamanı analizi yapılmış ve sırası ile O(lgn) ve O(n) olarak bulunmuştu. Heap Sort algoritması bir defa Build fonksiyonunu ve n defa da Heapify fonksiyonunu çağırmaktadır. Bu nedenle Heap Sort algoritmasının en kötü çalışma zamanı O(nlgn) değerine eşit olur. Bu Merge Sort algoritmasının çalışma zamanına eşittir. Ayrıca Heap Sort yerinde sıralama yapmakta ve ek yere ihtiyaç duymamaktadır. Bahar 2017 Doç. Dr. Suat Özdemir 38

Priority Queues Heap önceliklendirilmiş kuyruk yapılarını uygulamak için kullanılır Kuyruk dinamik olarak S tane değeri tutar Eğer max heap olarak uygulanırsa en büyük eleman her zaman kuyruğu başında yer alır Yerleştirme, çıkarma, değer artırma/azaltma (güncelleme) gibi tüm işlemler O(lgn) zaman alır Bahar 2017 Doç. Dr. Suat Özdemir 39

Priority Queues Max(S,x) Kökde yer alan değeri getirir. O(1) zaman alır. Max-Heap-Insert(S,x) En sona bir değer ekler ve parental karşılaştırarak köke kadar çıkar Bahar 2017 Doç. Dr. Suat Özdemir 40

Insert Örnek 11 değeri Heap e eklenecek 1 14 1 14 2 3 7 10 4 5 6 7 6 5 9 2 2 3 7 10 4 5 6 7 11 5 9 2 11 6

Insert Örnek Köke kadar çıkılır 1 14 2 3 11 10 4 5 6 7 7 5 9 2 6

Extract Max Kökte yer alan değeri çıkartır. Heapify fonksiyonu ile tekrar heap oluşturur