### hash冲突解决方案
* 开放定址法(线性探测再散列,二次探测再散列,伪随机探测再散列)
* rehash法
* 链地址法(拉链)
* 建立公共溢出区
### Time33算法
目前比较好的字符串Hash算法有Time33算法,即对字符串逐字符迭代乘以33,求得hash值,算法原型:
hash(i) = hash(i-1) * 33 + str[i]
![](https://img.kancloud.cn/f4/0e/f40e4a3718bdeb65e9e9a56477bac28c_813x72.png)
算法优化:先对字符串取信息指纹,再对信息指纹求Hashcode,因为字符串微小的变化就可以引起信息指纹的巨大不同,因此可以获得较好的随机散列
![](https://img.kancloud.cn/ca/5f/ca5fc63c86aafc2b59ba80a556c9db5d_668x97.png)
- 基础
- 数据
- 数据元素
- 数据结构
- 集合结构
- 线性结构
- 树型结构
- 图状结构
- 数据存储结构
- 算法定义
- 算法效率度量
- 算法效率分析
- 时间复杂度
- O(1)
- O(n)
- O(n2)
- O(logn)
- 空间复杂度
- 线性表
- 数组
- 链表
- 串矩阵和广义表
- 串
- 矩阵
- 广义表
- 栈和队列
- 栈
- 队列
- 树和二叉树
- 二叉树
- 满二叉树
- 完全二叉树
- 哈夫曼树
- 二叉查找树-BST树
- AVL树
- 红黑树
- B树
- B+树
- 字典树
- 跳表
- 算法
- 排序算法
- 冒泡排序
- 选择排序
- 快速排序
- 插入排序
- 希尔排序
- 归并排序
- 堆排序
- 基数排序
- 计数排序
- 桶排序
- 查找算法
- 二分查找算法
- Hash算法
- 一致性hash算法
- 算法题
- 001-用两个栈实现队列
- 002-只使用栈和递归逆序一个栈
- 附录
- SkipList跳表