散列表 hash table

    所谓查找实际上就是要确定关键码等于给定值的记录在查找结构中的存储位置。由于记录的存储位置和关键码之间不存在确定的对应关系,查找只能通过一系列的给定值与关键码的比较。这类查找技术都是建立在比较的基础之上,查找的效率依赖于查找过程中进行的给定值与关键码的比较次数,这不仅与查找集合的存储结构有关,还与查找集合的大小以及待查找记录在集合中的位置有关。

    理想的情况是不经过任何比较,直接就能得到待查记录的存储位置,那就必须在记录的存储位置和它的关键码之间建立一个确定的对应关系H,使得每个关键码key和唯一的存储位置H(key)相对应。在查找时,根据这个确定的对应关系找到给定值k的映射H(k),若查找集合中存在这个记录,则必定在H(k)的位置上,这种查找技术称为散列技术。采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表(hash table),将关键码映射为散列表中适当存储位置的函数称为散列函数(hash function),所得的存储位置称为散列地址(hash address)。

    具体地,散列过程为:

    1.存储记录时,通过散列函数计算记录的散列地址,并按照该散列地址存储该记录;

    2.查找记录时,通过同样的散列函数计算记录的散列地址,按此地址访问该记录。

    可见,散列既是一种存储方法,也是一种查找方法。但是散列不是一种完整的存储结构,因为它只通过记录的关键码定位该记录,很难完整地表达记录之间的逻辑关系,所以,散列主要面向查找的存储结构。

你可能感兴趣的:(散列表 hash table)