寻找最大价值

时间:2015-06-07 01:15:59

标签: c

数组中输入了一千万个元素(没有内存限制)。众所周知,在输入元素时,只要输入一个值,我们就可以通过检查更新输入值的最大值。

但想象一下,如果最大值的位置大约是9百万

如果我在800万到1000万的位置删除200万个元素 如果不进行任何比较,我们应该有下一个最大值。 这是否意味着在输入数据时我们应该有计划以某种方式组织数据以从剩余数据中获取最大值?

删除和插入将继续发生,但我们应该用更少的步骤在更短的时间内更新新的/剩余的最大值。 (使用多个堆栈可能会有所帮助。)

2 个答案:

答案 0 :(得分:0)

为此,您也可以通过以排序顺序插入数组中的值来实现,这意味着在排序的表单中检查插入元素的正确位置。

答案 1 :(得分:0)

如果块删除是常见操作,则可以维护列表的最大跨度层次结构。然后,对于每个编辑,您必须更新该数据,但是如果您只是遍历m个删除列表,那么它就像O(log n)而不是O(m log n),从堆中逐个删除它们。 / p>