Data structures 我可以使用什么数据结构来查找给定人员的电话号码';她叫什么名字?

Data structures 我可以使用什么数据结构来查找给定人员的电话号码';她叫什么名字?,data-structures,Data Structures,我可以使用什么数据结构来查找给定姓名的人的电话号码?关联数组,如哈希表 实际上,任何将键映射到值的东西。具体的数据结构将取决于您所使用的语言(除非您想要实现自己的语言,在这种情况下您可以自由支配)。假设您只使用此人的姓名进行查询,最好的选择是使用关联数据结构。这基本上是一种数据结构,通常实现为哈希表或平衡二进制搜索树,它将数据存储为key=>value(或者,用另一种方式表示为(key,value)对)。使用键查询数据结构,它返回相应的值。在您的情况下,密钥将是此人的姓名,值将是电话号码 与其自

我可以使用什么数据结构来查找给定姓名的人的电话号码?

关联数组,如哈希表


实际上,任何将键映射到值的东西。具体的数据结构将取决于您所使用的语言(除非您想要实现自己的语言,在这种情况下您可以自由支配)。

假设您只使用此人的姓名进行查询,最好的选择是使用关联数据结构。这基本上是一种数据结构,通常实现为哈希表或平衡二进制搜索树,它将数据存储为key=>value(或者,用另一种方式表示为(key,value)对)。使用键查询数据结构,它返回相应的值。在您的情况下,密钥将是此人的姓名,值将是电话号码

与其自己实现哈希表或二进制搜索树,不如检查一下您的语言库中是否已经有类似的内容,而现在大多数语言都有。Python有<代码> DITC< /C>,Perl有散列,java和c,有<代码> map < /C>,C++有STL<代码> map < /C> >
如果同一个键有多个值(例如,同一个人有多个电话号码),事情可能会变得有点棘手,但是有一些解决方法,比如使用
列表
/
向量
作为值,或者使用稍微不同的结构来支持同一个键的多个值(例如,STL
多映射
)。但你可能不必担心这一点。

每次我必须打开一本真正的电话簿(这几天很少见),我都会惊讶于我必须通过O(logn)过程才能找到我想要的东西。如果这本书是一个哈希表,而不是一个巨大的排序数组,那么访问权限将是O(1)。这些名称看起来只是完全随机的。地图在STL中实现为高度平衡的二叉树(可能是RB树),所以间接使用库和使用树是一样的