Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Search 数据结构排序+;搜索有效_Search_Sorting_Tree - Fatal编程技术网

Search 数据结构排序+;搜索有效

Search 数据结构排序+;搜索有效,search,sorting,tree,Search,Sorting,Tree,我需要有一个数据结构,说4键和其他数据;我可以在任何一把钥匙上分类。我可以选择什么数据结构? 分拣时间应该非常少 想到一棵树,但只会有助于搜索一个键。。。对于其他键,必须在该特定键上重新生成树,然后找到它。。。 任何可以同时处理所有4个键的数据结构? 恐怕没有这样的结构可以保证您对每个值都有相同的访问时间 最有效的搜索结构是树。有许多不同种类的树。最简单的是二叉搜索树。但是,您可能必须遍历此结构中仍然存在的所有键 这就是为什么我推荐您使用此树的平衡版本。二叉树是简单的结构 如果您正在寻找更高级的

我需要有一个数据结构,说4键和其他数据;我可以在任何一把钥匙上分类。我可以选择什么数据结构? 分拣时间应该非常少

想到一棵树,但只会有助于搜索一个键。。。对于其他键,必须在该特定键上重新生成树,然后找到它。。。 任何可以同时处理所有4个键的数据结构?
恐怕没有这样的结构可以保证您对每个值都有相同的访问时间

最有效的搜索结构是
。有许多不同种类的树。最简单的是
二叉搜索树
。但是,您可能必须遍历此结构中仍然存在的所有键

这就是为什么我推荐您使用此树的平衡版本。二叉树是简单的结构


如果您正在寻找更高级的内容,请查看
B-Tree
。这种结构被数据库索引使用,被认为是非常有效和快速的

对于像这样更一般的问题,最好改为在问。谢谢Dave。。你们知道数据库如何对不同的键进行排序吗?就像我们可以对不同的键进行排序一样?你们能提供一个例子吗?数据库进行排序的方式取决于许多因素。最有效的方法是选择符合搜索条件的键,对它们进行排序,然后将它们仅用作获取数据的参考。我的四个字段是:源ip、目标ip、源端口和目标端口。如果我需要搜索源ip,我将创建一个索引并使用源ip作为键。如果需要同时搜索源IP和目标IP,则需要两个搜索索引。如果您的查询更复杂。e、 g.选择符合条件A的源IP,然后将目标IP与条件B匹配,您将需要所谓的复合索引。此索引将两个索引合并为一个索引。无论如何,您可以始终为一个键创建每个索引,并迭代生成的记录数组,删除与其他条件不匹配的记录,然后对其进行排序。