İçeriğe atla

Yığın sıralaması

Yığın sıralaması
Yığın Sıralaması'nın rastgele üretilmiş sayıları nasıl sıraladığını gösteren örnek. Algoritmanın ilk aşamasında dizinin öğeleri yığın yapısını oluşturmak için yeniden sıralanır.
SınıfSıralama algoritması
Veri yapısıDizi
Zaman karmaşıklığıO(n log n)
En iyiAra sıra
Alan karmaşıklığıtoplamda О(n), ek alan O(1)

Yığın Sıralaması (İngilizcesi: Heapsort), bilgisayar bilimlerinde kullanılan karşılaştırmaya dayalı bir sıralama algoritmasıdır. Uygulamada pek çok bilgisayarda hızlı sıralama algoritmasından daha yavaş çalışsa da en kötü durumda O(n log n) çalışma süresi vardır. Yığın sıralaması diziyi yerinde sıralar ancak kararlı bir sıralama algoritması değildir.

Sözde Kodu

Aşağıda yığın sıralaması algoritmasının sözde kodu verilmiştir. swap dizideki iki öğenin yerlerini değiştirmek için kullanılmaktadır.

 function heapSort(a, count) is
     input:  an unordered array a of length count
 
     (first place a in max-heap order)
     heapify(a, count)
 
     end := count - 1
     while end > 0 do
         (swap the root(maximum value) of the heap with the last element of the heap)
         swap(a[end], a[0])
         (decrease the size of the heap by one so that the previous max value will
         stay in its proper placement)
         end := end - 1
         (put the heap back in max-heap order)
         siftDown(a, 0, end)
 
 function heapify(a,count) is
     (start is assigned the index in a of the last parent node)
     start := (count - 1) / 2
     
     while start ≥ 0 do
         (sift down the node at index start to the proper place such that all nodes below
          the start index are in heap order)
         siftDown(a, start, count-1)
         start := start - 1
     (after sifting down the root all nodes/elements are in heap order)
 
 function siftDown(a, start, end) is
     input:  end represents the limit of how far down the heap
                   to sift.
     root := start

     while root * 2 + 1 ≤ end do          (While the root has at least one child)
         child := root * 2 + 1            (root*2+1 points to the left child)
         (If the child has a sibling and the child's value is less than its sibling's...)
         if child < end and a[child] < a[child + 1] then
             child := child + 1           (... then point to the right child instead)
         if a[root] < a[child] then       (out of max-heap order)
             swap(a[root], a[child])
             root := child                (repeat to continue sifting down the child now)
         else
             return

heapify fonksiyonu alttan üste doğru bir yığın oluşturmak için kullanılırken yığın özelliği kazandırılmak için öğeler aşağıya doğru incelenir. Aşağıda gösterilmiş bir diğer yol kullanılarak yığın üstten alta oluşturulup öğeler yukarı doğru incelenebilir. Ancak aşağıdaki uygulama her ne kadar anlaşılması daha kolay olsa da daha yavaştır.

 function heapify(a,count) is
     (end is assigned the index of the first (left) child of the root)
     end := 1
     
     while end < count
         (sift up the node at index end to the proper place such that all nodes above
          the end index are in heap order)
         siftUp(a, 0, end)
         end := end + 1
     (after sifting up the last node all nodes are in heap order)
 
 function siftUp(a, start, end) is
     input:  start represents the limit of how far up the heap to sift.
                   end is the node to sift up.
     child := end 
     while child > start
        parent := ⌊(child - 1) ÷ 2⌋
         if a[parent] < a[child] then (out of max-heap order)
             swap(a[parent], a[child])
             child := parent (repeat to continue sifting up the parent now)
         else
             return

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">Sting</span>

Gordon Matthew Thomas Sumner ya da tanındığı sahne adıyla Sting, İngiliz müzisyen, aktivist ve oyuncudur. 1977'den 1986'da dağılana kadar new wave grubu The Police'in solisti, baş şarkı yazarı ve basçısıydı. 1985'te solo kariyerine başladı ve müziğinde rock, caz, reggae, klasik, new-age ve worldbeat unsurlarına yer verdi.

<i>Hail to the Thief</i> (albüm) Radioheadin albümü

Hail To The Thief, 2003 yılında çıkan ve Radiohead'in 6. albümüdür. EMI plak şirketinden çıkmıştır. Grup bir röportajında albümün adı ile George W Bush arasında oluşan bir söylentiyi "George W Bush'a hakaret etmek bizim için çok kolay olurdu" diyerek yalanlamıştır.

<span class="mw-page-title-main">Birleştirmeli sıralama</span>

Birleşmeli Sıralama, bilgisayar bilimlerinde derecesinde karmaşıklığa sahip bir sıralama algoritmasıdır. Girdi olarak aldığı diziyi en küçük hale gelene kadar ikili gruplara böler ve karşılaştırma yöntemi kullanarak diziyi sıralar.

R Kelly, tam adı Robert Sylvester Kelly,, Amerikan R&B şarkıcı, söz yazarı, plak yapımcısı ve hüküm giymiş bir seks suçlusu.

Radiohead'ın B-side olarak yayımladığı şarkıların tam listesi.

AHDL, Altera ortaklığı tarafından kendi ürettiği CPLD ve FPGA türündeki aygıtlarla birlikte kullanılmak üzere geliştirilen ve pazarlanan bir sayısal donanım tanımlama dilidir. Bu donanım tanımlama dilinin C programlama diline benzer yapısı ve VHDL diline benzer işlevi vardır. Altera'nın Quartus ve Max+ serisi derleyicileriyle derlenir.

Kokteyl sıralaması, bilgisayar bilimlerinde kabarcık sıralaması algoritmasına benzer bir sıralama algoritmasıdır. Kabarcık sıralamasından farkı sıralanacak listenin üzerinden tek yöne doğru değil iki yöne de geçerek öğeleri sıralamasıdır. Algoritmanın uygulanması kabarcık sıralaması algoritmasının uygulanmasından çok az daha zordur.

<span class="mw-page-title-main">İkili arama ağacı</span>

İkili arama ağacı, verileri organize etmek için kullanılan bir çeşit ikili ağaçtır. İkili ağaçtan temel farkı, verilerin sıralanmış bir şekilde tutulmasıdır, bu sayede ikili arama algoritmasının kullanılmasına imkân verir.

İplik sıralaması bilgisayar bilimlerinde kullanılan bir sıralama algoritmasıdır. Sıralanacak olan dizinin, sıralanmış alt dizilerinin oluşturularak bu alt dizilerin birleştirilmesi yoluyla sonucun oluşturulması mantığına dayanır. Algoritmanın her bir aşamasında ana dizinin üzerinden geçilir ve bu diziden zaten sıralanmış olan bir dizi eleman çıkarılır. Çıkarılan bu eleman dizileri daha sonra birleştirilir.

<i>Highest Hopes</i>

Highest Hopes - The Best of Nightwish, senfonik power metal grubu Nightwish'in dördüncü toplama albümüdür. 2005 yılında yayınlanmıştır.

Sayarak sıralama bilgisayar bilimlerinde kullanılan ve kova sıralaması gibi sıralanacak dizinin içindeki değerlerin aralığının bilinmesi durumunda kullanılabilen bir sıralama algoritmasıdır. Sayarak sıralama algoritması dizideki değerlerin aralık bilgilerini yeni bir dizi oluşturmak için kullanır. Oluşturulan yeni dizinin her bir satırı ana dizide o satır numarasının değerine sahip ögelerin sayısını gösterir. Yeni dizideki öge değeri sayıları daha sonra ana dizideki tüm değerlerin doğru konuma konulması için kullanılır. Sayarak sıralama algoritması güvercin yuvası sıralamasından daha verimsiz bir algoritmadır.

End of Innocence, Nightwish'in 2003 yılında çıkan konser albümü/DVD'si dir.

Denholm Mitchell Elliott, dört BAFTA sahibi İngiliz oyuncudur. 1988 yılında İngiliz Şövalyelik Nişanı kazandı.

<span class="mw-page-title-main">İzmit Katliamı</span> Yunanların bölgeden çekilirken şehri yağmalaması

İzmit katliamı 24 Haziran 1921 tarihinde meydana geldi ve İngiliz gazeteci Arnold Joseph Toynbee'nin tahminine göre 300'den fazla sivil Türk o gün öldürüldü. Toynbee olaydan kısa bir süre sonra şehri ziyaret etti ve olayları belgeledi. Olaylar Türk-Yunan Savaşı (1919-1922) sırasında Yunan kuvvetleri şehirden çekilirken meydana geldi ve şehir yağmalandı ve bir bölümü yandı. 29 Haziran 1921 günü İngiliz parlamentosu Yunan çekilmesini ve olası zulümleri tartıştı.

<span class="mw-page-title-main">React</span> Kullacı arayüzleri oluşturmak için kullanılan JavaScript kütüphanesi

React, kullanıcı arayüzü oluşturmaya yarayan açık kaynak kodlu bir javascript kütüphanesidir. Facebook önderliğinde bir geliştirici grubu tarafından geliştirilmekte olan React, Model-View-Controller prensibine uygun olarak oluşturulmuştur. React ile single-page olarak adlandırılan sayfalar geliştirilebileceği gibi React-Native ile mobil uygulamalar da geliştirilebilir.

<span class="mw-page-title-main">Erlang (programlama dili)</span> programlama dili

Erlang, Ericsson firması tarafından 1986'da Joe Armstrong, Robert Virding ve Mike Williams önderliğinde geliştirilen genel amaçlı (general-purpose), eş zamanlı (concurrent), dinamik, fonksiyonel ve atık toplama (garbage-collected) özelliğine sahip olan bir dildir. Erlang veya alternatifi olan Erlang/OTP şeklinde tanımlamalar da kullanılabilir. Erlang/OTP işleyiş sürecinin bir parçasıdır ve birçok kullanıma hazır komponent/bileşen sunmaktadır. Erlang/OTP bileşenlerinin birçoğu Erlang programlama dili ile yazılmıştır. Erlang/OTP, bunların yanında bir dizi tasarım prensipleri de sunmaktadır.

Argon2, Temmuz 2015'te Parola Özetleme Yarışmasının galibi olarak seçilen anahtar türetme fonksiyonudur. Lüksemburg Üniversitesi'nden Alex Biryukov, Daniel Dinu ve Dmitry Khovratovich tarafından tasarlanmıştır. Argon2'nin referans uygulaması, CC0 lisansı veya Apache License 2.0 altında yayınlanmış ve üç ilgili sürüm sağlamıştır:

Güvenli kodlama, bilgisayarın yazılımsal olarak güvenlik zafiyetlerinden korumayı amaçlayan bir yöntemdir. Yazılım hata ve kusurları ile mantıksal hatalar yazılımı sömürme amaçlı kullanılan güvenlik zafiyetlerin başında gelir. Raporlanan zafiyetlerden elde edilen bilgiler ışığında güvenlik uzmanları çoğu zafiyetin ufak programlama hatalarından kaynaklandığını keşfetmiştir. Güvenli olmayan bu kodlar incelenerek eğitimci yazılım geliştiren kişiler ve kurumlar bu açıklıkları azaltmayı hedeflemektedir.

<span class="mw-page-title-main">A* arama algoritması</span> algoritma

A* arama algoritması, sezgisel bir çizge dolaşma ve yol bulma algoritmasıdır. Tamlığı, optimalliği ve optimal verimliliği ile bilgisayar biliminin birçok alanında kullanılmaktadır. Tüm düğümleri belleğinde tuttuğundan olan alan karmaşıklığı dezavantajıdır.