zoukankan      html  css  js  c++  java
  • HASH表解决冲突的两种方式

    HASH表解决冲突有两种方式,一种是开放地址,一种是链表。后者的删除比较简单,就是从链表上删除一个数据。但是很多场合下,前者更适合应用。前者的优点是,CACHE命中率高,内存管理简单。但是从前者删除数据却很困难。

    如果简单地把待删除结点删除,则因为冲突,而被放到它后面的结点将会无法访问。可以设一个简单的删除标志,这样查询的时候,直接访问它的下一位,增加的时候,把它当空闲节点。但是,经过大量的增删之后,假设每次增删都是随机的,将会有大量被标志为删除的结点,这样会降低查找的速度。一种方案是,经过一定次数的删除后,重组HASH,把这些标志位去掉,这个过程也会比较麻烦,而且会导致,系统在一段时间内压力过大,所以下面讨论一种渐进的方式。

    在删除一个结点后,把后面受它影响的结点往前挪。但是怎么知道哪些结点受它影响呢?跟它HASH到同一个位置的节点会受影响,不HASH到同一个位置的节点也可能会受影响。

  • 相关阅读:
    String类
    数学类
    同一场景下多个图层之间的调用
    茶壶在触摸机制下旋转的三种方式
    犀牛3D模型下载
    纹理--高清设计素材下载
    cocos2d-x-2.x与3.x帧动画实现方式的改变
    toast提示框的实现
    MenuItem创建注意事项
    Cocos2d-x 面试题解 整理01
  • 原文地址:https://www.cnblogs.com/dsky/p/2466675.html
Copyright © 2011-2022 走看看