在小于O(n)的非常大的列表中查找元素

Shi*_*maa -1 haskell

我想检查一个元素是否存在于O(1)而不是O(n)的列表中(10,000,000顺序中的一个非常大的元素).带有elem x ysO(n)的列表所以我想使用另一种数据类型/构造函数,但它必须在Prelude(不是数组); 有什么建议?如果我必须建立我的数据类型会是什么样的?

还要以相同的顺序(10,000,000)对大数字列表进行排序,并在尽可能短的时间内为元素编制索引.

Cod*_*ice 6

在O(1)时间内搜索数据集中项目的唯一方法是,如果您已经知道它在哪里,但是您不需要搜索它.对于未排序的数据,搜索是O(n)时间.对于排序数据,搜索是O(log n)时间.