c - 使用 ASCII 字符和进行二进制搜索字符串?

标签 c algorithm search linked-list ascii

我正在做一个小项目——使用链表的学生数据库,这是我第一学期的一部分。规范是,用户应该能够使用名称首字母搜索记录,这是结构中的 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/

相关文章:

c - 如何根据 C 编程语言标准初始化结构体

java - SSLSockets 和密码规范问题

java - Benders.Strategy 使用 Java 和 opl

c++ - 对 C++ 字符串的二进制搜索不起作用

ruby-on-rails-3 - 如何修复 Rails 3 中的 Request-URI Too Large 错误?

c - 使用 Makefile 重新定义问题

c++ - 从某个较大的虚拟地址空间(例如 20GB 以上)分配内存

PHP 目录特定的内容和重定向

php - 如何找到数组中的最大和最小日期?

C代码,搜索功能