n个元素和O(1)操作的数据结构?

在这里,我们将看到一个具有n个元素和O(1)运算的数据结构。因此,这些操作将花费固定的时间来执行。

数据结构将包含n个元素(从0到n-1)。数据可以是任何顺序。插入,删除和搜索将花费O(1)的时间。

为了解决这个问题,我们将使用一个布尔数组。这将表明该物品是否存在于位置i。如果该项目存在,它将保持1,否则为0。

算法

初始化(n)

begin
   fill all elements of the Boolean array as 0
end

插入(i)

begin
   set element at index i as 1(true)
end

删除(i)

begin
set element at index i as 0(false)
end

搜索(i)

begin
   return item at position i
end

示例

//initialization
void init(int n) {
   bool dataStructure[n];
   for (int i = 0; i<n; i++)
      dataStructure[i] = 0;
}
//插入
void insert(unsigned i) {
   dataStructure[i] = 1;
}
//删除
void delete(unsigned i) {
   dataStructure[i] = 0;
}
//搜索
bool 搜索(unsigned i) {
   return dataStructure[i];
}