C中的快速字典没有线性搜索

时间:2009-08-25 19:09:47

标签: c data-structures dictionary

如何在没有线性搜索的情况下在C中制作快速dictonary(String =>指针和Int =>指针)?我需要一些(或更多)代码行,而不是库,并且必须能够在闭源软件(LGPL,...)中使用它。

4 个答案:

答案 0 :(得分:6)

使用Hash Table。哈希表将具有恒定时间查找。 Here are some excerpts in Can implementation in C (and Portuguese :)

答案 1 :(得分:2)

您需要实现一个 Hash Table ,它使用哈希码存储对象。查找时间是不变的。

Binary Tree 可以在 log(n)时间内遍历和查找元素。

答案 2 :(得分:1)

Ternary Search Tree诞生于此任务。

答案 3 :(得分:1)

如果字符串很长,则不能将“哈希表”视为常量时间!运行时取决于字符串的长度!对于长字符串,这会导致问题。另外,你遇到的问题是桌面太小或哈希函数太差。

如果你想使用散列,请查看karp-rabin。如果你想要一个算法依赖于你正在搜索的单词的大小,请查看aho-corasick。