用于快速搜索的数据结构

时间:2014-02-08 08:59:33

标签: performance search data-structures grid-computing

如果我必须为研究所的数据网格站开发应用程序。应用的目的是在上午10点到10点30分之间的一周内从数据GRID站接收一次数据,然后将其存储到数据结构中,数据仅由数字组成,但一个条目的数字可能很长从数组,列表,链表,双向链表,队列,优先级队列,堆栈,二叉搜索树,AVL树,线程二叉树,堆,排序顺序数组和跳过列表<哪个数据结构将是最佳的给定方案/ p>

我想存储已排序的数字。排序后的数据可以按升序或降序排列,主要关注点是“快速有效的搜索”。

2 个答案:

答案 0 :(得分:1)

根据您的描述,我收集到您不存储任何其他数字或数字的数据。所以基本上你想知道一个数字是否在集合中。

了解这一点的最快方法是为每个数字添加一组标志。假设您处理1到1000之间的数字。您想知道数字200是否在集合中。看看位置200,标志是真还是假。你知道,这是最快的方法,因为你只查找一个地方。

正如我们在这里谈论布尔标志一样,一点就足够存储了。根据数字的数量,可用的内存和机器的架构,您可以决定将布尔值以位,字节,单词或其他形式存储起来。

话虽如此,你可能不得不处理这么多数字,以至于上述方法不再可行。理论上它会是最快的,但是由于内存有限,硬盘交换,许多读取,其他算法可能会更好。您可以选择:

  • 连续存储数字并对它们执行二进制搜索
  • 将数字存储在二叉树中
  • 使用哈希算法

其中哪一项最有效,再次取决于您的数据和机器。

答案 1 :(得分:0)

这取决于您想要进行的搜索类型。如果您只想知道数字是否在数据集中,那么哈希将非常快并且与数据集的大小无关。而且没有必要排序,甚至没有任何秩序的概念。

如果我引用Perl的作者Larry Wall的话:

  

对关联数组进行线性扫描就像试图俱乐部一样   有人带着Uzi去死。

(关联数组与散列同义。)