18散列表(上):Word文档中的单词拼写检查功能是如何实现的

文章目录

  • 1.散列思想
  • 2. 散列函数
  • 3. 散列冲突
  • 4. 解答开篇

问题:Word的这个单词拼写检查功能是如何实现的?

1.散列思想

散列表:Hash table.

**散列表利用数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。**可以说,如果没有数组,就没有散列表。

18散列表(上):Word文档中的单词拼写检查功能是如何实现的_第1张图片

2. 散列函数

定义:hash(key)

基本要求:

  • 散列函数计算得到的散列值是一个非负整数;

  • 如果key1 = key2,那hash(key1) == hash(key2);

  • 如果key1 ≠ key2,那hash(key1) ≠ hash(key2)。 注释:出现相等,就是散列冲突,无可避免。

3. 散列冲突

常用的散列冲突解决方法有两类,开放寻址法(open addressing)和链表法(chaining)。

18散列表(上):Word文档中的单词拼写检查功能是如何实现的_第2张图片
18散列表(上):Word文档中的单词拼写检查功能是如何实现的_第3张图片

4. 解答开篇

常用的英文单词有20万个左右,假设单词的平均长度是10个字母,平均一个单词占用10个字节的内存空间,那20万英文单词大约占2MB的存储空间,就算放大10倍也就是20MB。不大,可以放在内存中。

用户输入单词,就去单词散列表查询有没有,没有就提示用户可能拼写错误。

你可能感兴趣的:(#,数据结构和算法,-,极客时间,王争,散列表,哈希算法,数据结构)