2014-02-08 61 views
0

如果我必须开发一个机构的数据网格站的应用程序。应用的目的是在上午10点到10点30分之间每周从数据GRID站接收数据,然后将其存储到数据结构中,并且数据仅由数字组成,但数据可能非常长那么对于数组,列表,链表,双向链表,队列,优先级队列,堆栈,二叉搜索树,AVL树,线程化二叉树,堆,排序顺序数组和跳过列表,给定场景中哪个数据结构将是最佳数据结构用于快速搜索的数据结构

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

+0

请问数据经常变化? –

+0

仅在0和9之间存储“数字”,还是存储任何数字? –

+0

如果我必须开发一个机构的数据网格站的应用程序。应用的目的是在上午10点到10点30分之间每周从数据GRID站接收数据,然后将其存储到数据结构中,并且数据仅由数字组成,但数据可能非常长那么对于给定的场景哪个数据结构将是最好的。 – Mubashir

回答

1

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

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

因为我们在这里讨论布尔标志,所以存储就足够了。根据数字的数量,可用内存和机器的体系结构,您将决定是否以位,字节,单词或其他方式存储布尔值。

说了这话之后,你可能不得不面对如此多的数字,以至于上述方法不再可行。这在理论上是最快的,但是由于内存有限,硬盘交换,许多读取,其他算法可能会更好。你将不得不之间的选择:存储数量连续

  • 并对其
  • 使用哈希算法

存储二叉树

  • 数字执行二进制搜索的这些证明效率最高,同样取决于您的数据和机器。

  • +0

    如果我必须开发一个研究所的数据网格站的应用程序。应用的目的是在上午10点到10点30分之间每周从数据GRID站接收数据,然后将其存储到数据结构中,并且数据仅由数字组成,但数据可能非常长那么对于给定的场景哪个数据结构将是最好的。 – Mubashir

    +0

    对不起,我无法回答。其实我甚至不确定我完全理解这项任务。你会得到10000个数字。你存储它们。然后一个星期,你一次又一次地问:“号码123456已发送?”,“号码987654321已发送?”等等。然后发送新的数据。您删除旧的10000号码并将其替换为新号码。等等。是?有多少号码会近似发送?什么范围的数字,即什么是可能的最低和最高的数字?你明白我的答案吗?我在问,因为你对有关的基本问题没有提示。 –

    0

    这取决于你想要做什么类型的搜索。如果您只想知道某个数字是否在您的数据集中,那么哈希将会非常快并且与数据集的大小无关。而且无需排序,甚至不需要任何订单概念。

    如果我可以引述拉里·沃尔,Perl的作者:

    在一个关联数组做线性扫描就像是试图俱乐部 人死刑,加载乌兹。

    (关联数组是用哈希同义。)

    +0

    如果我必须开发一个机构的数据网格站的应用程序。应用的目的是在上午10点到10点30分之间每周从数据GRID站接收数据,然后将其存储到数据结构中,并且数据仅由数字组成,但数据可能非常长那么对于给定的场景哪个数据结构将是最好的。 – Mubashir

    +0

    您每周收到一个数字序列?这不是很多 - 一个平面文件将是理想的。没有认真......你需要做什么类型的处理,导致它需要很快? –

    +0

    感谢您的回答。如果我必须从数组,列表,链表,链表,双向链表,队列,优先级队列,堆栈,二叉查找树,AVL树,线程化二叉树和堆中选择一个数据结构,那么从它们中选择哪一个更好 – Mubashir

    相关问题