【发布时间】:2018-04-03 08:00:53
【问题描述】:
我有简单的字符串到 int 的映射。我应该如何使用哈希或其他有效算法通过 int 进行查找(请提供一些示例)?
struct string_int_map {
char *str;
int val;
};
struct string_int_map s_to_i_map[] {
{ "test1", 45 },
{ "test2", 95 },
{ "test3", 83 },
{ "test4", 67 },
};
溶胶:
对数组进行排序,然后执行二分查找。感谢人们的帮助。
【问题讨论】:
-
这段特定代码的目的是什么?看起来真的是倒退了,因为通常你写一个简单的高速哈希函数,教科书中有很多在实现难度和速度方面各不相同的函数,然后将其处理成一个标准问题的哈希表,通常是一个数组单链接条目。
-
如果
struct数组按val排序,对val进行二分搜索会很快。 -
为了获得最大速度,但以内存为代价,使用数组并让哈希值作为索引。它不会比这更快。
-
感谢 cmets @Weather 和 klutt。可以举个简单的例子吗?
-
binary search algorithm 是众所周知的。抱歉,这里不提供代码示例。