HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)

Slides:



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

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Karmaşıklık Giriş.
STRİNG FONKSİYONLARI.
AES (Advanced Encryption Standart)
KÜME DÜNYASINA GİDELİM
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
ÖMYO Nesne Tabanlı Programlama-1
BPR152 ALGORİTMA VE PROGRAMLAMA - II
String Diziler(Katarlar)
Dizi (array) değişkenleri
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Sorting Methods Basics of Sorting Elementary Sorting Algorithms
Özyineli Sıralama Algoritmaları
Bölüm 3 – Yapısal Programlama
BUL DEĞİŞTİR. ÖRNEK 8 WEB Sitesinden Örnek 9’u İndiriyoruz
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
DÖNGÜLER.
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
MIT503 Veri Yapıları ve algoritmalar Sıralama algoritmaları
SÖZDE –KODLAR (pseudo-code)
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA KONTROL : Prof. Dr. Asaf VAROL KONU : LİSTELERE.
Veri Yapıları Veri, her türlü değer demektir. Veri yapılarının tasarlanma ve oluşturulma amacı; “verinin işlenmesini kolaylaştırmak ve bu işlemi daha verimli.
EXCEL DE VERİ TABANI (DATABASE) İŞLEMLERİ
Akış Kontrol Mekanizmaları
Bilgisayarda Ofis Programları
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
Yıldız Teknik Üniversitesi Makina Müh. Bölümü
KUYRUKLAR (QUEUES).
JAVA’DA DÖNGÜLER.
Ders İçeriği Liste Soyut veri yapısı (ADT)
Oyun Kuramına Giriş.
HESAP TABLOSU PROGRAMLARI
Word’de Adres Mektup Birleştirme
4. LİSTE OLUŞTURMA VE BİÇİMLENDİRME
TOPLAMA İŞLEMİ VE ALIŞTIRMALAR.
KÜMELER.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
IMGK 207-Bilimsel araştırma yöntemleri
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
Raporlama Menüleri Emine TUNÇEL Kırklareli Üniversitesi, Pınarhisar Meslek Yüksekokulu.
SİMPLEKS METOT Müh. Ekonomisi.
pointerverisonraki 0Tülay 1Vedat6 LB3=22Pelin15 3Burak9 4Kadir 5Seyhan13 6Utku16 LB1=77Ayşe3 8 9Ceyda Dilek 12 13Şükrü4 LB2=1414Zeynep17.
YAPISAL PROGRAMLAMA KAVRAMI
AVL(Adel’son-Vel’skiĭ and Landis) Ağacı AVL ağacı, iki alt ağacının yükseklikleri farkının en fazla 1 olabildiği dengeli ikili arama ağacıdır. AVL ağacında.
Hashing (Çırpılama).
Floyd Algoritması Floyd Algoritması Dijkstra algoritmasının daha genel halidir. Çünkü şebekedeki herhangi iki düğüm arasındaki en kısa yolu belirler. Algoritma,
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.
‘nin çözümünü bulmanın bir yolu yok mu?
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
PHP ve HTML İnternet Programlama - 2. Koşullu İfadeler ve Döngüler Döngü ya da çevirim diyebileceğimiz, belli şart ve koşullarda istenilen değerleri yapabilmemizi.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
Çizge Algoritmalari 6. ders.
İleri Algoritma Analizi
İ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)
İleri Algoritma Analizi
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
1 EXCEL DE VERİ TABANI (DATABASE) İŞLEMLERİ Excel de bir veritabanı oluşturulabilir veya başka programlarda (Access gibi) oluşturulmuş olan Veri Tabanları.
Sunum transkripti:

HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT) www.ogrenciyiz.net

VERİ YAPILARI Sayısal ortamdaki bilgilerin veya verilerin belirli bir anahtar sözcüğe göre belirli bir anlamda sıralı erişimini sağlayan düzenlemedir. Temel Sıralama Algoritmaları; Araya Sokma(İnsertion) Seçmeli(Selection) Kabarcık(Bubble) Birleşmeli(Marge) Kümeleme(Heap) Hızlı(quick) Sıralama www.ogrenciyiz.net

Hızlı(Quick) Sıralama; Böl ve yönet yaklaşımına dayanır ve dizi belirli sınır değerine göre iki alt diziye ayrılır. İkiye ayırma işlemi, bu sınır sayısından küçük elamanlar bir tarafa , büyük elemanlar diğer tarafa toparlanarak yapılır. www.ogrenciyiz.net

Bir liste oluşturmadan önce bu listeyi quick sort yöntemiyle nasıl çözeceğimizi öğrenelim . Önce listeden bir isim seçerek bu isme pivot elemanı adını verelim. Amacımız pivot elemanın listedeki doğru yerini bulmak ve onu oraya koymak olsun. Pivotun doğru yerini bulmak için listeyi iki daha küçük listeye bölelim. www.ogrenciyiz.net

Bu listelerden birincisi pivot elamanından önce yer alan isimler listesi olsun, ikincisi de pivottan sonra gelen elemanlar listesi olsun. Sonuç olarak, pivot elemanının doğru yeri, bu iki liste arasında yer alacaktır. www.ogrenciyiz.net

Listemizi iki alt satıra bölmek için adına imleç(pointer) denen yeri değişebilen oklar kullanacağız. Bu oklardan birini pivot elemandan sonraki satıra ikincisini de son satıra koyalım. Geliştirdiğimiz algoritma imleçleri birbirine yaklaştırırken aşağıdaki çıkarımı(assertion) sağlasın: Çıkarım 1: Üsteki imlecin (A) üstünde yer alan isimler alfabetik olarak sıralamada pivot elemanından daha küçüktür. Alttaki imleçte (B) daha aşağıda yer alan isimler ise alfabetik sıralamada pivot elamanından daha büyüktür. www.ogrenciyiz.net

Elimizde şöyle bir isim listesi olsun: Jale, Bülent, Ali, Tolga, Canan, Banu, Gül, Ceyda, Sema, Kemal. Bu listedeki ilk elemanı pivot eleman olarak seçer, listenin ikinci ve son elemanlarına sırası ile A ve B imleçlerini koyarak algoritmayı başlatalım. www.ogrenciyiz.net

Jale (pivot) A Bülent Ali Tolga Canan Banu Gül Ceyda Sema B Kemal www.ogrenciyiz.net

Bir sonraki adımda B imlecini listenin yukarılarına doğru hareket ettirelim. Her seferinde de en altta kalan isimlerin pivot elemandan büyük olup olmadığını kontrol edelim. Bu adımda pivot elemandan küçük ya da ona eşit bir isme gelince, B imlecini o elamanın bulunduğu satıra yerleştiririz. İmleç en fazla pivot elemana kadar ilerleyecek ve orada duracaktır.Bu isme eriştiğimiz zaman artık B imlecini hareket ettirmekten vazgeçeriz. Yukarıdaki örnekte B imleci Ceydada duracaktır: Jale (pivot) A Bülent Ali Tolga Canan Banu Gül B Ceyda Sema Kemal www.ogrenciyiz.net

Şimdi de A imlecini aşağıya doğru kaydıralım Şimdi de A imlecini aşağıya doğru kaydıralım. Aşağıya doğru indikçe isimleri pivot elemanı ile karlaştırarak kaydırma işlemini isimler pivot elemanından daha küçük veya ona eşit olduğu sürece devam ettirelim. Olabilecek en son şey iki imlecin birbirini geçmesidir. Bu durum ise pivot elemanın B imlecinin bulunduğu yerde olması gerektiğini gösterir. Örnekte ilk hareketler iki imleci de tıkamıştır. Bu koşullar sağlandığı zaman imleçleri hareket ettirirsek birinci çıkarımı ihlal etmiş oluruz. Yukarıdaki imleci aşağı kaydırarak listeyi şu hale getirmiş oluruz: www.ogrenciyiz.net

Jale (pivot) Pivottan büyük yada Bülent ona eşit isimler Ali A Tolga Canan Banu Gül B Ceyda Pivottan büyük isimler Sema Kemal www.ogrenciyiz.net

Bu durumda kilit (deadlock) adı verilir Bu durumda kilit (deadlock) adı verilir. Kilidin bir şekilde açılması gerekir. Bunun yolu ise imleçlerin gösterdiği isimleri birbirleri ile değiştirmektir. Ancak bundan sonra, çıkarımızı ihlal etmeden imleçleri tekrar hareket ettirebiliriz. Bu değiştirmeden sonra yeni listemiz şöyle olacaktır: Jale (pivot) Pivottan büyük yada Bülent ona eşit isimler Ali A Ceyda Canan Banu Gül B Tolga Pivottan büyük isimler Sema Kemal www.ogrenciyiz.net

Şimdi tekrar imleçleri hareket ettirir ve her seferinde kilit oluşunca imleçlerin gösterdiği isimlerin yerlerini değiştirmeye devam ederiz. Sonunda iki imleç listenin bir yerinde birbirini kesecektir. Örneğimizde bu kesişme Gül ile Tolga arasında olacaktır. Yani; imleçlerin kesişmesi ile liste aşağıdaki hale gelecektir: Jale (pivot) Pivottan büyük yada Bülent ona eşit isimler Ali Ceyda Canan Banu B Gül A Tolga Pivottan büyük isimler Sema Kemal www.ogrenciyiz.net

Artık pivot elemanı doğru yere yerleştirebilecek bir duruma gelmiş olduk. Yukarıdaki açıklamalardan da anlaşılacağı gibi, pivot elemanı B imlecinin gösterdiği yere girmelidir. Bu işlemi yapmanın en kestirme yolu pivot ile B imlecinin gösterdiği elemanları değiştirmektir. Bu değişimden sonra listemiz şu hale gelecektir: www.ogrenciyiz.net

Gül Bülent Ali Ceyda Canan Banu B Jale (pivot) A Tolga Sema Kemal www.ogrenciyiz.net

Bu kadar uğraşıdan sonra sadece listedeki bir elemanın yerini bulabildik! Ne var ki, biraz dikkat edilirse, bundan sonraki işin çok kolay olduğu fark edilebilir. Zira yapılması gereken iş, aynı yöntemi tekrarlayarak iki alt listeye uygulamaktır. Bu yaklaşım yapılması gereken iş miktarını iki katına çıkarmış görünse de listelerin boyları hızla kısaldığı için çabuk bitecektir. www.ogrenciyiz.net

İf(Liste ikiden az eleman içeriyorsa) Şimdi de Hızlı Sıralama Algoritmasını bir sözde-kod ile sunalım. Bu işlemi Sırala adı verilen bir yordam ile çağıralım. Bu yordamın ilk işi listenin uzunluğunu ölçmektir. Eğer, listede iki veya daha fazla isim varsa yordam, if-then-else yapısının esle kısmına dallanarak devam eder. İf(Liste ikiden az eleman içeriyorsa) Then(Listeyi sırala olarak belirle) Else (Listenin ilk elamanını pivot elemanı olarak seç A imlecini listenin ikinci ve B imlecini de son elemanına yerleştir www.ogrenciyiz.net

While (A ve B imleçleri kesişmediği sürece) do [B imlecini yukarı doğru pivottan küçük veya ona eşit olan elemana kadar kaydır; A imlecini aşağı doğru pivottan büyük olan elemana kadar kaydır) İf (A ve B imleçleri kesişmiyorsa) Then(imleçlerin gösterdiği yerlerin elemanlarını değiştir)] B imlecinin gösterdiği eleman ile pivot elemanın yerini değiştir. Sırala yordamını pivotun üstündeki listeye uygula Sırala yordamını pivot elemanının altındaki listeye uygula. www.ogrenciyiz.net