当前位置: 首页 > news >正文

建设信用卡积分商城网站免费网址大全

建设信用卡积分商城网站,免费网址大全,自媒体wordpress主题,网页的设计流程是怎样的目录 1.哈希表概念 2冲突 2.1概念 2.2 冲突-避免 2.3冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节 ​编辑 2.5 冲突-解决-开散列/哈希桶 2.5冲突严重时的解决办法 3.实现 4.性能分析 5.与Java集合类的关系 1.哈希表概念 在顺序结构中#xff0c;元素关键码和存…目录 1.哈希表概念 2冲突 2.1概念 2.2 冲突-避免 2.3冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节 ​编辑 2.5 冲突-解决-开散列/哈希桶 2.5冲突严重时的解决办法 3.实现 4.性能分析 5.与Java集合类的关系 1.哈希表概念 在顺序结构中元素关键码和存储位置并没有明确关系因此在查找一个元素时必须要经过多次比较顺序结构中查找一个元素的时间复杂度是O(N),而在平衡树中查找的时间复杂度是O(log2N)搜索的效率取决于元素的比较次数。 那么有没有一种数据结构可以做到查找的时间复杂度为O(1)呢不经过任何比较一次从表中直接得到要搜索的元素通过某种函数使元素的存储位置和它的关键码建立一一映射的关系。那么在查找的时候就能够很快的通过该函数找到该元素。 当向该结构中   插入元素 根据待插入元素的关键码以此函数计算出该元素的存储位置并按此位置进行存放   搜索元素 对元素的关键码进行同样的计算把求得的函数值当做元素的存储位置在结构中按此位置取元素比较若关键码相等则搜索成功。 该方式即为哈希(散列)方法哈希方法中使用的转换函数称为哈希(散列)函数构造出来的结构称为哈希表(Hash Table)(或者称散列表) 例如给出一组数据集合(1,7,6,4,5,9) 哈希函数设置为hash(key) key % capacity; capacity为存储元素底层空间总的大小 用该方法进行搜索不必进行多次关键码的比较因此搜索的速度比较快   2冲突 2.1概念 对于两个数据元素的关键字Ki 和Kj (i ! j)有Ki !Kj 但有Hash(Ki ) Hash(Kj)即不同关键字通过相同哈 希哈数计算出相同的哈希地址该种现象称为哈希冲突或哈希碰撞。 把具有不同关键码而具有相同哈希地址的数据元素称为“同义词“ 2.2 冲突-避免 首先我们需要明确一点由于我们哈希表底层数组的容量往往是小于实际要存储的关键字的数量的这就导致一个问题冲突的发生是必然的但我们能做的应该是尽量的降低冲突率   2.3冲突-避免-哈希函数设计 引起哈希冲突的一个原因可能是哈希函数设计不够合理。 哈希函数设计原则 哈希函数的定义域必须包括需要存储的全部关键码而如果散列表允许有m个地址时其值域必在0到m-1之间   哈希函数计算出来的地址能均匀分布在整个空间中   哈希函数应该比较简单 常见哈希函数 1. 直接定制法--(常用) 取关键字的某个线性函数为散列地址HashKey A*Key B 优点简单、均匀 缺点需要事先知道关键字的分布情况 使用场景适合查找比较小且连续的情况. 2. 除留余数法--(常用) 设散列表中允许的地址数为m取一个不大于m但最接近或者等于m的质数p作为除数按照哈希函数Hash(key) key% p(pm),将关键码转换成哈希地址   2.4 冲突-避免-负载因子调节 负载因子和冲突率关系粗略演示 所以当冲突率达到一个无法忍受的程度时我们需要通过降低负载因子来变相的降低冲突率。 已知哈希表中已有的关键字个数是不可变的那我们能调整的就只有哈希表中的数组的大小   2.5 冲突-解决-开散列/哈希桶 开散列法又叫链地址法(开链法)首先对关键码集合用散列函数计算散列地址具有相同地址的关键码归于同一子集合每一个子集合称为一个桶各个桶中的元素通过一个单链表链接起来各链表的头结点存储在哈希表中。 从上图可以看出开散列中每个桶中放的都是发生哈希冲突的元素。 开散列可以认为是把一个在大集合中的搜索问题转化为在小集合中做搜索了   2.5冲突严重时的解决办法 刚才我们提到了哈希桶其实可以看作将大集合的搜索问题转化为小集合的搜索问题了那如果冲突严重就意着小集合的搜索性能其实也时不佳的这个时候我们就可以将这个所谓的小集合搜索问题继续进行转化例如 1. 每个桶的背后是另一个哈希表 2. 每个桶的背后是一棵搜索树 3.实现 我们先使用int来作为key和val的类型来简单实现一下hash package demo1;public class HashBuck {//通过内部类来定义节点static class Node{private int key;private int val;private Node next;public Node(int key, int val) {this.key key;this.val val;}}public Node[] array; //数组public int useSize;//存放了多少个有效数据private final static float DEFAULT_LOAD_FACTOR 0.75f; //额定负载因子public HashBuck() {this.array new Node[10];}//初始化/*put方法,讲key和val存进去,如果负载因子超过了DEFAULT_LOAD_FACTOR (0.75)再调用resize方法进行扩容并重新哈希*/public void put(int key,int val){int indexkey%array.length;Node cur array[index];while (cur!null){if(cur.keykey){cur.valval;return;}curcur.next;}Node nodenew Node(key,val);node.nextarray[index];array[index]node;useSize;if(size()DEFAULT_LOAD_FACTOR){resize();}}private final float size(){return useSize*1.0f/array.length;}private void resize(){Node[] newarray new Node[array.length*2];for (int i 0; i array.length; i) {Node cur array[i];while (cur!null){Node tmpcur.next;int index cur.key % newarray.length;cur.nextnewarray[index];newarray[index] cur;curtmp;}}array newarray;}public int get(int key){int indexkey%array.length;Node cur array[index];while (cur!null){if(cur.key key){return cur.val;}cur cur.next;}return -1; //如果获取不到 则返回-1}}4.性能分析 虽然哈希表一直在和冲突做斗争但在实际使用过程中我们认为哈希表的冲突率是不高的冲突个数是可控的也就是每个桶中的链表的长度是一个常数所以通常意义下我们认为哈希表的插入/删除/查找时间复杂度是O(1) 5.与Java集合类的关系 1. HashMap 和 HashSet 即 java 中利用哈希表实现的 Map 和 Set 2. java 中使用的是哈希桶方式解决冲突的 3. java 会在冲突链表长度大于一定阈值后将链表转变为搜索树红黑树 4. java 中计算哈希值实际上是调用的类的 hashCode 方法进行 key 的相等性比较是调用 key 的 equals 方法。 所以如果要用自定义类作为 HashMap 的 key 或者 HashSet 的值必须覆写 hashCode 和 equals 方法而且要做到 equals 相等的对象hashCode 一定是一致的
http://www.pierceye.com/news/477594/

相关文章:

  • 网站建设模板免费下载制作网站公司图片
  • 网站建设是一次性给钱还是什么pr模板免费下载网站
  • 大气物流公司网站源码建设家装网站
  • 网站后台关键词交流建设网站
  • 学院网站建设总结华北理工大学学科建设处网站
  • 简单的网站php开发教程用cms做的网站 的步骤
  • seo杭州seo快速排名利器
  • 谷歌不收录网站一个完整的短视频策划方案
  • 网页制作培训网站关于营销的最新的新闻
  • 免费查找资料的网站wordpress中文4.8
  • 凡科建设的网站如何中式建筑公司网站
  • 珠海网站建设品牌策划开发设计公司网站
  • 找别人做的网站怎样修改招聘app
  • 学校网站内容建设银行网站电脑上不去
  • 住建部工程建设标准网站上海室内设计事务所
  • 做外贸采购都是用什么网站网站重构方案
  • 企业网站做推广河南app开发
  • 海宁做网站的公司仿搜狐视频网站源码
  • 网站备案和不备案的上海制作网站公司网站
  • 网站建设专业介绍在线平面图设计
  • 临时工找工作网站做美缝手机网站不收录
  • 凡科建站怎么样网络推广网站培训班
  • 优惠券的网站怎么做的网站建设业务元提成
  • 网站开发项目组成员免费建网站的app
  • 怎样自己做公司网站驻马店logo设计公司
  • 知名网站制作公司排名徐州人才网最新招聘2023
  • 网站建设与网页设计难学吗做彩票的网站
  • 请问怎么做网站郑州小程序开发制作
  • 城乡建设网站职业查询系统小公司根本办不了icp许可证
  • 网站架构搭建搭建网站是什么专业