如何在没有线性搜索的情况下在C中制作快速dictonary(String =>指针和Int =>指针)?我需要一些(或更多)代码行,而不是库,并且必须能够在闭源软件(LGPL,...)中使用它。
答案 0 :(得分:6)
答案 1 :(得分:2)
您需要实现一个 Hash Table ,它使用哈希码存储对象。查找时间是不变的。
Binary Tree 可以在 log(n)时间内遍历和查找元素。
答案 2 :(得分:1)
Ternary Search Tree诞生于此任务。
答案 3 :(得分:1)
如果字符串很长,则不能将“哈希表”视为常量时间!运行时取决于字符串的长度!对于长字符串,这会导致问题。另外,你遇到的问题是桌面太小或哈希函数太差。
如果你想使用散列,请查看karp-rabin。如果你想要一个算法依赖于你正在搜索的单词的大小,请查看aho-corasick。