Merhaba. Bu konuda iki sıralama algoritmasından bahsedeceğim. Heap sort ve Merge sort. Bu iki algoritma zaman karmaşıklığı olarak aynı değerlere sahiptir(nlogn).Bildiğimiz gibi algoritmaları tercih ederken zaman ve hafıza karmaşıklıklarına bakarız. Bu karmaşıklıkları buradan inceleyebiliriz.
Peki biz bu iki algoritmadan birini kullanmak istersek, hangisini tercih etmeliyiz? Benim araştırmalarıma göre Merge sort, Heap sort algoritmasına göre hafızayı daha az kullandığı için kısıtlı hafıza alanlarında tercih edilmelidir deniyor.
Şu sayfada bahsedilen iki algoritmayı test edebiliyoruz. Birkaç denemede Merge Sort algoritmasının daha hızlı olduğunu gördüm. Ancak zaman karmaşıklığı aynı olduğu halde neden Merge Sort çoğunlukla üstün geliyor?
Optimize edilirse aynen sizin dediğiniz gibi O(n) gibi karmaşıklıklara inebiliyor, tıpkı bubble sort gibi.
Peki heap sort vs merge sort hakkında fikriniz nedir? Hangi durumlarda kullanılabilir ikisinden biri?
Bir kisim girdi icin optimizasyon (cogunlukla) baska bir kisim girdi icin pesimizasyon getiriyor, onu soylemeye calisiyorum.
Merge vs heap (vs digerleri)? Bilmiyorum.
Data setini temsil eden bir subset aliyorsun, butun sort algoritmalarini calistirip deniyorsun. En guzel calisani seciyorsun.
(Sonra review esnasinda “gunde bes milisaniye icin kodun okunabilirligini azaltmana degmez” diyorum, standart kutuphanenin default sort’una geri donuyoruz)