1 / 18

HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)

HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT). 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 )

avak
Download Presentation

HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. Bir liste oluşturmadan önce bu listeyi quicksortyö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

  5. 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

  6. 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

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

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

  9. 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

  10. Ş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

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

  12. Jale (pivot) Pivottan büyük yada Bülent ona eşit isimler Ali ACeyda Canan Banu GülB TolgaPivottan büyük isimler Sema Kemal 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: www.ogrenciyiz.net

  13. Jale (pivot) Pivottan büyük yada Bülent ona eşit isimler Ali Ceyda Canan BanuB Gül A Tolga Pivottan büyük isimler Sema Kemal Ş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: www.ogrenciyiz.net

  14. 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

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

  16. 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

  17. Ş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

  18. 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

More Related