用于 n 个元素和 O(1) 操作的数据结构
提出以下数据结构:
数据结构将保存从 0 到 n-1 的元素。元素没有顺序(没有升序/降序要求)
操作的复杂性应该如下:
* 插入元素 – O(1)
* 删除一个元素 – O(1)
* 找到一个元素 - O(1)
我们强烈建议您将浏览器最小化并先自己尝试一下。
布尔数组在这里工作。如果 i 存在,则数组将在第 i 个索引处具有值“真”,如果不存在,则为“假”。
初始化:
我们创建一个大小为 n 的数组并将所有元素初始化为不存在。
void initialize(int n)
{
bool A[n];
for (int i = 0; i
插入元素:
void insert(unsigned i)
{
/* set the value at index i to true */
A[i] = 1; // Or A[i] = true;
}
删除一个元素:
void delete(unsigned i)
{
/* make the value at index i to 0 */
A[i] = 0; // Or A[i] = false;
}
寻找元素:
// Returns true if 'i' is present, else false
bool find(unsigned i)
{
return A[i];
}
作为一个练习,更改数据结构,使其保持从 1 到 n 的值,而不是从 0 到 n-1。