Algorithm 摊余成本/插入和删除

Algorithm 摊余成本/插入和删除,algorithm,Algorithm,这怎么可能?对我来说,似乎每次调用Insert时我都需要对数据结构进行排序,如果它没有排序,则删除将花费超过O(1)的时间。因此,插入的摊销成本应如下所示: 插入的摊余成本=(S+1)实际成本+(S+1)数据结构之后-(S-1)数据结构之前=S+1 因此,摊销成本显然不是O(1)如果您从一个空集开始,那么如果您正确地进行插入(插入时将元素放在正确的位置),您就不必对它进行一次排序。删除也是一样——一次也不需要排序。我想知道n是什么?@Ken White,“插入时将元素放在适当的位置”你能举个例子

这怎么可能?对我来说,似乎每次调用Insert时我都需要对数据结构进行排序,如果它没有排序,则删除将花费超过O(1)的时间。因此,插入的摊销成本应如下所示:

插入的摊余成本=(S+1)实际成本+(S+1)数据结构之后-(S-1)数据结构之前=S+1


因此,摊销成本显然不是O(1)

如果您从一个空集开始,那么如果您正确地进行插入(插入时将元素放在正确的位置),您就不必对它进行一次排序。删除也是一样——一次也不需要排序。我想知道
n
是什么?@Ken White,“插入时将元素放在适当的位置”你能举个例子吗?对我来说,这听起来像是排序。@Neil n是总和中的元素,不是。在小张纸上写一些随机字母。抓起一张纸放在你面前。抓住下一个,如果它比第一个低,就把它放在第一个的左边,如果它高,就放在右边。重复第三件,根据其值将其放置在适当位置。这不是排序,而是插入。排序是将整套文件一次随机排成一行,然后重新排列,使其按正确的顺序排列。
Design a data structure to support the following two types of operations on an initially empty
set S of real numbers:
— Insert(S,x): Inserts number x into S.
— Delete(S): Deletes the largest n/2 numbers from S.

Explain how to implement this data structure with O(1) amortized cost per operation.