Pat*_*ski 6 arrays algorithm math data-structures
想象一下,我们有一个无限数组,我们存储整数.当n元素在数组中时,仅使用n第一个单元格,其余为空.
我正在尝试提出一种数据结构/算法,它能够:
每个操作都必须在O(sqrt(n)).
我遇到过这个网站,其中提出了以下算法:
不幸的是,这个解决方案O(sqrt(n) * log(n)).
如何让它变得纯净O(sqrt(n))?
由于所有操作都需要执行查找,因此我认为插入和删除都是O(1).只是一个猜测.并且可能一旦插入完成,删除将是显而易见的.
什么是无限阵列是什么意思?
基本上,您可以在其中存储任意数量的元素.这是无限的.但是,有两个限制.首先 - 一个单元格只能存储一个元素.第二 - 当数组当前存储n个元素时,只能使用n个第一个单元格.
订单怎么样?
不要紧.
您是否考虑过双亲堆(又名:BEAP)?
堆保持高度为sqrt(n),这意味着插入、查找和删除都在O(sqrt(n))最坏的情况下运行。
Munro 和 Suwanda 1980 年的论文《用于快速搜索和更新的隐式数据结构》中描述了这些结构。