我正在做一个小项目——使用链表的学生数据库,这是我第一学期的一部分。规范是,用户应该能够使用名称首字母搜索记录,这是结构中的 char[4]。
现在有两种搜索首字母的方法,一种是通过线性搜索,这确实效率低下(我实际上并不关心这个,因为这不会是一些公司的基本内容,等等)或通过二分搜索.
二进制搜索需要排序数组,所以我在想使用字符串的 ASCII 总和进行搜索是否有意义?
例如,记录 1 的首字母 =“AB”,记录 2 的首字母为“CD”。两者的 ASCII 总和为 65+66 = 131 & 67+68 = 135,列表使用首字母排序(使用 strcmp)。
所以当用户输入“AB”时,我将只查找数字 131,如果存在,则显示记录?
这可能是一个非常糟糕的主意,请不要对我发火并解释为什么它是个糟糕的主意。
最佳答案
对我来说似乎是一个好的开始。您将如何区分“TON”和“NOT”?它们的总和是否会等于相同的值(“碰撞”)?您是否建议采用两层方法?首先使用 ascii-sum 搜索,其次使用某种方法来解决冲突?似乎这里有一些关于散列的好信息:http://burtleburtle.net/bob/hash/index.html
关于c - 使用 ASCII 字符和进行二进制搜索字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694565/