• 哈希表的简单理解


    哈希表

    我们要在数组或者链表里查找一个指定得数据,唯一能做得事情就是遍历的去查找,这样的时间复杂度是O(n),那有没有一种方法可以以O(1)的时间复杂度找到这个数据呢?现在来想这个一个问题,现实生活中我们的衣物都是分类存放的,放的时候根据是什么种类的衣物放到指定的地方,取的时候依照要取的衣物种类去指定的地方找,这就是O(1)复杂度的操作,那在编程里怎么实现放在哪去哪找这个动作呢,哈希函数就是用来干这个的,哈希函数是一个概念不是一个指定的函数,实际应用中具体的实现有很多,比如这里我就把哈希函数定义为h(x) = x%3,这时候我们要存储数字4,经过哈希函数得到1,就把4存在位置为1的地方,找的时候再去位置为1的地方去找。再比如我们要存入5那就是5%3=2,存在位置2。

    但是当我们要存入7呢,7%3=1,又要存入1了,4存在位置1,7也存在位置1,那这个位置1到底存的是4还是7呢?

    这就是所谓的哈希冲突,h(x)=h(y),发生冲突在所难免,我们能做的就是就是减少冲突的次数,哈希函数选的得当,就能减少冲突次数。既然冲突在所难免,那冲突了怎么办呢,自然有解决办法,这里要说的是链地址法,就是存放数据的位置放一个列表把冲突的数据都放进去。

    总结

    哈希表的核心就是哈希函数和解决冲突的方式,这两点都是有多种选择的,具体使用什么样的哈希函数,什么样的冲突解决方法都要因情况而定。

  • 相关阅读:
    python安装
    道德准则
    工作职场
    30岁之前
    互联网产品
    项目经理催活指南
    项目中如何找到优先级,以及工作时间安排
    语音行业相关概念
    cookie sessionStorage localStorage 的异同
    数组中map,forEach和for循环的区别
  • 原文地址:https://www.cnblogs.com/ljsh/p/12831844.html
Copyright © 2020-2023  润新知