Düşünülmesi gereken ilk şey, desteklenen bir işlem nedir?
"Belirli, sabit bir anahtarla değer eklemek" (örneğin, tamsayı alanından alınan anahtarlar için, = 3 ile ekleme), min yığını için desteklenen bir işleme karşılık geliyor mu?
Hayır, çünkü bu işlem daha genel desteklenen operasyonlarla önemsiz bir şekilde uygulanabilir. Benzer şekilde, mevcut eleman ile aynı anda 2 elemanın yerleştirilmesi yapılabilir insert
.
Öte yandan, insert
işlem, uygulama ayrıntılarını göstermekten başka bir şekilde tanımlanamaz. Wikipedia sayfasında listelenen işlemler heapify
hariç, hemen hemen aynıdır insert
.
Başka bir deyişle, tür üzerinde sağlanan ve iyi performans göstermeleri için uygulama ayrıntılarına sıkı sıkıya bağlı olan temel işlemler vardır ve bu kurala uymayan ve dolayısıyla bir kombinasyon olarak uygulanabilecek diğer işlemler de vardır. kanonik olanların.
Bu tanımı göz önünde bulundurarak, artış anahtarının performans kaybı olmadan yalnızca desteklenen diğer işlemlerle uygulanabileceğini düşünüyor musunuz? Eğer öyleyse, yukarıdaki tanım tarafından desteklenen bir işlem değildir, aksi takdirde haklı olabilirsiniz.
Muhtemelen, sağladığım desteklenen bir operasyonun tanımı bildiğim kadarıyla benim. Resmi değildir ve bu nedenle tartışmaya tabidir (her ne kadar benim için oldukça net görünse de). Ancak, birisi veri türleri için desteklenen bir işlemin ne olduğunu açık ve net bir şekilde tanımlayan veya en azından benimkinden daha iyi terimlerle tanımlayan bir kaynak sağlayabilirse memnun olurum (CLR'de verilen tanım nedir? ).
İkinci noktam, öncelik sırasını (ikili yığınların varlık nedeni) nasıl tanımlayacağımız olacak. Bu increase_key
veri tipi için, yani doğru kullanımı için gerekli bir işlem midir?
Gördüğünüz gibi benim açım sadece tanımlarla ilgili. Sorularınıza gerçekten cevap vermiyorum, sadece bazı işaretçiler, bu yüzden geliştirmeler bekliyoruz.