我有一个数组key_words = [abc,ugh,yut,asd] 我有另一个单词数组= [wer,ray,ugh,ghjgj,asa,dog,rte,yut,top,asd .........]
我需要在单词中找到key_words的位置。
问题是:我应该迭代key_words并用文字搜索它们吗?或者反过来?
我的第一直觉是外部循环应该在key_words上,然后内部循环应该在单词上,以便我可以在找到匹配时退出单词循环。
然而,在这两种情况下,复杂度为m * n,m为词的长度,n为关键词的长度。
应该做什么或两者都是相同的情况?
请不要告诉我有关尝试或其他更快的搜索方法。 My query is does the order of the loops effect the complexity and can this be handled?
答案 0 :(得分:0)
如何创建一个类似的数组:
keyArray = ['wer' => 1, 'abg' => 2, 'saf' => 3 ]
然后你可以在大多数语言中使用基于哈希实现的索引,这样你就更接近n(2n?)
index = keyArray['wer'];
答案 1 :(得分:0)
就理论复杂性而言,它们是等价的。
任何人都可以自信地说您提出的优化是有效的,您需要首先研究代码运行的特定语言和平台。大多数编译器都会为你做一些技巧,不同的缓存配置会影响memory locality(对于数组很重要),等等。其他编译器和解释器不会。
此外,数据的特征也会影响优化的有效性。要进行优化,您必须采用样本工作负载并将优化的性能与基线进行比较。