首页 > 其他分享 >hash 表

hash 表

时间:2022-10-24 09:45:57浏览次数:55  
标签:取模 hash 映射 数组 某个 Hash

Hash

1E5个数,数据范围在1E-9到1E9,需要查找某个数,Hash表用接近O(1)的时间办到,进行映射,

取模,映射到某个数,模谁呢,这个数一般是比较大的质数,这样矛盾的概率就比较小。

  1. 拉链法

开一个数组,映射之后,原数用单链表的方式接到这个格的下边。

    

 

  1. 寻址法

只用一个数组,取模找到k后,看这个地方有木有别的值,如果有,向后寻找,直到找完,故一般数组的大小要开到两三倍,一定能找到。

 

 

 

标签:取模,hash,映射,数组,某个,Hash
From: https://www.cnblogs.com/lyhjzx/p/16820451.html

相关文章

  • java基础HashSet 集合TreeSet集合
           ......
  • 今天聊下Java中的HashMap---Java中用的就很多的集合框架
    先说下HashMap的定义HashMap是一个散列表,存储的内容是键值对(key-value)映射。HashMap实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键......
  • HashMap 源码分析(五)
    ......
  • HashMap
    在jdk1.7版本其底层结构是:数组+链表在jdk1.8版本之后底层结构修改成为:数组+链表+红黑树在扩容机制上:jdk1.7:当满足扩容条件后-->其初始默认的容量为16,每次扩容都×2;......
  • hash和history
    hash和history路由的区别在了解路由模式前,我们先看下什么是单页面应用,vue-router的实现原理是怎样的,这样更容易理解路由。SPA与前端路由SPA(单页面应用,全程为:Single-......
  • 主席树-----动态开点,不hash
    ​​POJ-2104 ​​第k大#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<vector>#include<iostream>#include<algorithm>usingname......
  • Java中HashMap的几种遍历方式
    publicstaticvoidmain(String[]args){Map<String,Object>map=newHashMap<>();map.put("姓名","张三");map.put("年龄",30);......
  • JDK1.7和JDK1.8中concurrentHashMap的区别
    一、JDK1.8和JDK1.7的几个区别:数据结构:取消了Segment分段锁的数据结构,取而代之的是数组+链表+红黑树的结构。保证线程安全机制:JDK1.7采用segment的分段锁机制实现线程......
  • 【散列】散列表HashTable分离链接法类模板的实现
    分离链接法(separatechaining),做法是将散列到同一个值得所有元素保留到一个链表List中。如果这个元素是个新的元素,那么它将被插入到链表的前端。插入前端的原因是:常......
  • 【散列】散列表HashTable
    1.概念散列表,又叫哈希表(HashTable),是能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。散列表的实现常常叫做散列(hashing),散列是一种用于以常数平均......