zoukankan      html  css  js  c++  java
  • 004. 哈希表

    --------------------

      - 涉及内容:
    
      - 哈希表的简单介绍
      - 存储原理
      - 哈希表的效率
    
      - 2020/10/16
    

    注:此处介绍内容仅仅是为了更好的理解对应算法题,并非讲解哈希

    算法题:https://www.cnblogs.com/cstrick-1/p/13825676.html


    基础认识:

    哈希也称散列,属于一类函数。
    
    其定义理解:将任意长度的数据通过散列算法映射到哈希表中的一个位置,而这个位置可以存放多个数据(多个数据时发生碰撞,
    
              在碰撞的比例足够低不会影响性能时可以不用处理。反之,就要处理碰撞冲突)
    
    ----------------------------------------------------------------------------------------------------
    
    注:在简单算法题解题中,是自己分配数据存放到哈希里面的位置,并非通过算法实现位置的分配。
    
    比如,hashtable.put(nums[i], i);
    
    ----------------------------------------------------------------------------------------------------
    
    

    哈希表存储原理

    
    理解:假设要存储字符串right,通过散列算法(算法不唯一),最后得出一个int型数值,该数值也就是哈希表的下标,
    
         得出下标就将字符串right存放到哈希表对应的下标里面
    
    

    哈希表的效率

    
    - 按照平均时刻算的话,哈希表的查询效率是O(1)
    
    
    - 哈希表可以看作是数组和链表的结合体,可以通过哈希下表迅速定位到某个位置,同一个位置上面可以存放多个数据,
    
      而这些同一个位置上面的数据是以指针的形式串连在一起的,形成一个链表。
    
    
    - 所以,好的哈希表(同一个位置存放的数据少)的查询效率为O(1),但是如果很多数据都存放在同一个位置上面,查询的时候就
    
      需要遍历链表,最坏情况下查询效率达到了O(N)
    
    
    不断修正,不断笔记,能力有限,若有不妥之处,望不吝指教。
    ------------------------------------------------------
    
  • 相关阅读:
    linux下安装jdk1.8
    在eclipse里面启动tomcat服务器时报错Server Tomcat v7.0 Server at localhost failed to start.
    frame使关闭口生效
    web.xml配置错误处理节点
    mac下修改mysql默认字符集为utf8
    Centos6.5关闭防火墙命令
    mysql修改
    java错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build
    完美解决Linux服务器tomcat开机自启动问题
    MAC 查看java home目录
  • 原文地址:https://www.cnblogs.com/cstrick-1/p/13824940.html
Copyright © 2011-2022 走看看