哈希表算法

1:哈希表概述:

     哈希表是种数据结构,它可以提供快速的插入操作和查找操作。哈希表也有一些缺点它是基于数组的,数组创建后难于扩展,某些哈希表被基本填满时,性能下降得非常严重。这个问题是哈希表不可避免的,即冲突现象:对不同的关键字可能得到同一哈希地址。 

2:特点:

    哈希表是基于数组的,因此它的扩展性不强,当哈希表被放满数据时,性能下降,

    也没有一种简便的方法可以以任何一种顺序〔例如从小到大〕遍历表中数据项。如果需要这种能力,就只能选择其他数据结构。
    然而如果不需要有序遍历数据,并且可以提前预测数据量的大小。那么哈希表在速度和易用性方面是无与伦比的。

   哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比快,树的操作通常需要O(N)的时间级。哈希表不仅速度快,编程实现也相对容易。

3:举例:

     哈希表最常见的例子是以学生学号为关键字的成绩表,1号学生的记录位置在第一条,10号学生的记录位置在第10条...
     如果我们以学生姓名为关键字,如何建立查找表,使得根据姓名可以直接找到相应记录呢?
     用上述得到的数值作为对应记录在表中的位置,得到下表:
    上面这张表即哈希表。
     如果将来要查李秋梅的成绩,可以用上述方法求出该记录所在位置:
     李秋梅:lqm 12+17+13=42 取表中第42条记录即可。
     问题:如果两个同学分别叫 刘丽 刘兰 该如何处理这两条记录?
     这个问题是哈希表不可避免的,即冲突现象:对不同的关键字可能得到同一哈希地址。
4:哈希表构造方法:
     1:直接定址法   2:数据分析法 3:除留余数法 4:折叠法 5:平方取中法
原文地址:https://www.cnblogs.com/2714585551summer/p/5740448.html