Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 快速搜索的数据结构_Performance_Search_Data Structures_Grid Computing - Fatal编程技术网

Performance 快速搜索的数据结构

Performance 快速搜索的数据结构,performance,search,data-structures,grid-computing,Performance,Search,Data Structures,Grid Computing,如果我必须为一个研究所的数据网格站开发一个应用程序。应用程序的目的是在上午10点到上午10点30分之间每周从数据网格站接收一次数据,然后将其存储到数据结构中,数据仅由数字组成,但数字对于一个条目可能非常长,那么对于给定场景,从数组、列表、链表、,双链表、队列、优先级队列、堆栈、二叉搜索树、AVL树、线程二叉树、堆、排序序列数组和跳过列表 我要存储已排序的数字。排序后的数据可以按升序或降序排列,主要关注的是“快速高效的搜索”。根据您的描述,我推断您不存储任何带有数字或数字的其他数据。所以基本上你想

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


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

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

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

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

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

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

以下哪一项被证明是最有效的,同样取决于您的数据和机器。

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

请允许我引用Perl的作者Larry Wall的话:

在关联数组上执行线性扫描就像尝试使用club 有人用装有子弹的Uzi把他打死了


(关联数组是散列的同义词。)

如果我必须为研究所的数据网格站开发应用程序,数据会经常更改吗?只存储0到9之间的“数字”或任何数字。应用程序的目的是在上午10点到上午10点30分之间每周从数据网格站接收一次数据,然后将其存储到数据结构中,数据仅由数字组成,但数字对于一个条目可能非常长,那么对于给定场景,哪种数据结构将是最好的。如果我必须为数据开发应用程序研究所的网格站。应用程序的目的是在上午10点到上午10点30分之间每周从数据网格站接收一次数据,然后将其存储到一个数据结构中,数据仅由数字组成,但数字对于一个条目可能非常长,那么对于给定场景,哪种数据结构将是最好的。您每周接收一个数字序列?这并不是很多,一个平面文件将是理想的。不,说真的。。。你需要做什么样的处理才能使它更快?谢谢你的回答。如果必须使用,请从数组、列表、链表、双链表、队列、优先级队列、堆栈、二进制搜索树、AVL树、,线程二叉树和堆如果我必须为一个研究所的数据网格站开发一个应用程序,那么从排序顺序数组和跳过列表中选择什么更好呢。应用程序的目的是在上午10点到上午10点30分之间每周从数据网格站接收一次数据,然后将其存储到数据结构中,数据仅由数字组成,但数字对于一个条目可能非常长,那么对于给定场景,哪种数据结构将是最好的。对不起,我无法回答这个问题。事实上,我甚至不确定我是否完全理解这项任务。比如说,你可以得到10000个数字。你储存它们。然后在一周内,你一次又一次地问“123456号发送了吗?”,“987654321号发送了吗?”等等。然后发送新数据。您可以删除旧的10000个数字,并将其替换为新的数字。等等对大约会发送多少个数字?数字的范围是什么,即可能的最低和最高数字是什么?你明白我的答案了吗?我之所以这样问,是因为你没有就相关的基本问题给出任何提示。