--------------------
- 涉及内容:
- 哈希表的简单介绍
- 存储原理
- 哈希表的效率
- 2020/10/16
注:此处介绍内容仅仅是为了更好的理解对应算法题,并非讲解哈希
算法题:https://www.cnblogs.com/cstrick-1/p/13825676.html
基础认识:
哈希也称散列,属于一类函数。
其定义理解:将任意长度的数据通过散列算法映射到哈希表中的一个位置,而这个位置可以存放多个数据(多个数据时发生碰撞,
在碰撞的比例足够低不会影响性能时可以不用处理。反之,就要处理碰撞冲突)
----------------------------------------------------------------------------------------------------
注:在简单算法题解题中,是自己分配数据存放到哈希里面的位置,并非通过算法实现位置的分配。
比如,hashtable.put(nums[i], i);
----------------------------------------------------------------------------------------------------
哈希表存储原理
理解:假设要存储字符串right,通过散列算法(算法不唯一),最后得出一个int型数值,该数值也就是哈希表的下标,
得出下标就将字符串right存放到哈希表对应的下标里面
哈希表的效率
- 按照平均时刻算的话,哈希表的查询效率是O(1)
- 哈希表可以看作是数组和链表的结合体,可以通过哈希下表迅速定位到某个位置,同一个位置上面可以存放多个数据,
而这些同一个位置上面的数据是以指针的形式串连在一起的,形成一个链表。
- 所以,好的哈希表(同一个位置存放的数据少)的查询效率为O(1),但是如果很多数据都存放在同一个位置上面,查询的时候就
需要遍历链表,最坏情况下查询效率达到了O(N)
不断修正,不断笔记,能力有限,若有不妥之处,望不吝指教。
------------------------------------------------------