@Vonov 看完了,我认为这篇文章的重点为懒删除的思想,金字塔本身结构倒不是最重要的。如果把金字塔换成一个splay(或任意可维护有序列表的数据结构)和一个链表,我仍然可以用懒删除的思想达成你的O(logn)插入和O(1)删除最小值。做法如下:插入时在splay上走,得到链表里的插入位置。删除最小时不实际删除,在链表上移动。如果插入比最小值更小的数,则用splay删除一个前缀。
金字塔的复杂度证明大部分为trivial,您的说明有点累赘。
所以它不比任何数据结构好(悲)
@ComeIntoPower 哦对,我也发现了,那没事的。只要换成splay就行了。我不在乎数据结构,只在乎这个思想。:)
@ComeIntoPower 然而splay这个例子举得不好吧,换个平衡树比较好
毕竟splay这个东西。。。好像删除最小值是O(1)的
@142857cs 不,任意可维护有序列表的都行
@Vonov 好吧,但是懒删除这个思想实在是太广泛了。我只能暂时做不予通过处理。
它没有做出任何实质性的改进
@ComeIntoPower 我的意思是均摊复杂度的东西,特别是splay,似乎没有必要做这种懒删除
@142857cs 对,,,总之这东西能用的场合也没多少,,,
诶诶,插个眼,我好像有个常数很小的办法,还没调好,这菜还没凉呢。