迭代两个循环以查找结果的复杂性

时间:2018-01-23 05:25:31

标签: arrays time-complexity

我有一个数组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?

2 个答案:

答案 0 :(得分:0)

如何创建一个类似的数组:

keyArray = ['wer' => 1, 'abg' => 2, 'saf' => 3 ]

然后你可以在大多数语言中使用基于哈希实现的索引,这样你就更接近n(2n?)

index = keyArray['wer'];

答案 1 :(得分:0)

就理论复杂性而言,它们是等价的。

任何人都可以自信地说您提出的优化是有效的,您需要首先研究代码运行的特定语言和平台。大多数编译器都会为你做一些技巧,不同的缓存配置会影响memory locality(对于数组很重要),等等。其他编译器和解释器不会。

此外,数据的特征也会影响优化的有效性。要进行优化,您必须采用样本工作负载并将优化的性能与基线进行比较。