【问题标题】:Lookup table by int in C using hash使用哈希在 C 中通过 int 查找表
【发布时间】: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 是众所周知的。抱歉,这里不提供代码示例。

标签: c algorithm hash


【解决方案1】:

对数组进行排序并执行二分查找。感谢@Weather 提供参考。

【讨论】:

    猜你喜欢
    • 2011-10-15
    • 2011-10-13
    • 2015-07-09
    • 2012-05-12
    • 1970-01-01
    • 2011-11-11
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多