《数据结构》学习-- Hash(1) --Hash简介
本系列是《数据结构与算法分析-C语言描述》(Data Structures and Algorithm Analysis in C,作者Mark Weiss)一书的学习笔记,当我在做cc150需要补某个知识点时,就会把这本书翻出来学习一下,同时分享~ 1. Hash Table(哈希表)的优缺点优点:平均常数时间(constant average time)内完成插入、删除和寻找(insert,delete,find)操作。 2. Hash Table 概览一个最简单的Hash Table例子就是一个(非常大的)数组。举例来说,如果我们知道输入数据是[0,999] 范围内的整数,那么我们只要创建一个长度为1000的 3. Practical Hash Table当然,实际上我们的输入数据可能范围非常大,以至于无法创建一个那么大的数组,或者输入数据不是整数而是字符串、浮点数或者用于自定义的类型。因此,直接映射、纯数组方式构成的Hash Table不能满足我们的所有需求。 3.1 Hash Table要素要构成实用的Hash Table,有几大要素:
3.2 Hash Function正如上面说的,Hash Function的作用是将输入数据映射到不同的Hash表位置。举例来说,如果Hash表大小为10,输入数据是正整数,那么我们可以将输入数据模10以后的结果作为Hash表位置,这样保证每个数据都存在一个对应的合法的位置。 3.2.1 Hash Function如何选择呢?答案是不一定。具体情况具体分析。但有几个主要的参考要素:
3.2.2 常用的Hash Function
4.总结根据Gayle McDowell(Cracking the coding interview作者)所述,Hash表是在面试时最最常用的数据结构之一,因此必须牢固掌握。 以上是关于Hash Table最最基础的概念,还不足以让你编写出一个实际可用的Hash表。那么具体实现细节该怎么做呢?冲突解决方案有哪些经典方法呢?期待下一篇“《数据结构学习》–Hash(2)–Separate Chaining”吧! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |