我有大约100,000个项目的大阵列和大约1000个项目的小阵列。我需要在大数组中搜索小数组中的每个字符串,并且我需要索引返回的字符串。 (所以我需要搜索100k阵列1000次)perl - 搜索大/排序/数组作为字符串的索引
大数组已被排序,所以我猜想某种二进制斩波类型搜索会比使用foreach循环更有效率(使用'last'来中断当找到循环),这是我开始。 (这第一次尝试导致大约30米的比较!)
是否有一个内置的搜索方法,可以产生更高效的结果,或者我将不得不手动编码二进制搜索?我也想避免使用外部模块。
为了这个问题的目的,假设我需要在大的排序数组中找到单个字符串的索引。 (我只提了1000个项目给予尺度的概念)
为什么你想避免外部模块?不是我知道一个完全符合法案的人,但你可以尝试[tcgrep -1F](http://search.cpan.org/perldoc?tcgrep),看看它是否足够快,并修改它以返回索引;我没有找过其他CPAN模块。 – reinierpost
还有[List :: BinarySearch](http://search.cpan.org/perldoc?List%3A%3ABinarySearch)。在实现你自己的任何东西之前,我会尝试使用模块。 – reinierpost
该数组是否已存在于Perl数组中,还是存储在磁盘上?在后一种情况下,它会适合你的主存吗?如果不是这样,即使这样排除了二分搜索,也可能不会立即将其全部存入主内存。 – reinierpost