我正在尝试实现(Language1-Language2)字典。 我想双向搜索算法,使其速度快于O(n)
例如,如果(hello,hola)是一对,
SEARCH_SPANISH_BY_ENGLISH(你好)=“ hola”,并且
SEARCH_ENGLISH_BY_SPANISH(hola)=“你好”
如果您对算法有想法,能否告诉我如何设置字典并实现搜索算法?似乎我必须使用分而治之,但我不确定如何做到。谢谢。
字典的一面应为单数形式,这意味着我无法同时构建英语-西班牙语和西班牙语-英语字典。
答案 0 :(得分:0)
搜索时,任何平衡树,排序数组或哈希表数据结构都比O(n)
更好。
对于双向性,您只能有两个数据结构,一个数据结构用于English-Español,另一个结构用于Español-English。这并不一定意味着要有两个 complete 词典,只是您需要针对每个方向的某种描述的搜索索引。
但是,由于您似乎具有一对一的单词映射,因此您只需将 one 词典保持为永久性,并在运行时构建反向词典即可。
答案 1 :(得分:0)
您可以有两个词典,因为搜索时间将保持不变。但是,如果您仍然希望有双向字典,那么Jon Skeet的版本就在这里: