用于查找某人姓名的电话号码的合适数据结构?

fcu*_*hoo 4 data-structures

假设您要编写一个实现简单电话簿的程序.给定一个特定名称,您希望能够尽快检索该人的电话号码.您将使用什么数据结构来存储电话簿,为什么?

Ken*_*ent 6

下面的文字回答了你的问题.

在计算机科学中,散列表或散列映射是使用散列函数将标识值(称为密钥(例如,人名)映射到其关联值(例如,其电话号码)的数据结构.因此,哈希表实现了一个关联数组.散列函数用于将密钥转换为要在其中寻找相应值的数组元素(槽或桶)的索引(散列).

该文本来自wiki:hashtable.

还有一些进一步的讨论,比如碰撞,哈希函数......查看维基页面了解详情.


Yav*_*var 5

我尊重和喜欢哈希表:)但即使是平衡的二叉树也适合你的电话簿应用程序,在最坏的情况下会给你一个对数的复杂性,并避免你有好的哈希函数,冲突等,这更适合于大量的数据.

当我谈论大数据时,我的意思是与存储相关的东西.每次在散列表中填充所有桶时,您将需要分配新存储并重新散列所有内容.如果您提前知道数据的大小,则可以避免这种情况.平衡的树木不会让你陷入这些问题.在设计数据结构时也需要考虑域,例如小型设备存储很重要.