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

国内h5网站欣赏手机网站怎么设置成电脑版的

国内h5网站欣赏,手机网站怎么设置成电脑版的,课程网站建设中容易出现的问题,简单网站建设流程图一、哈希概念 顺序结构以及平衡树中 元素关键码与存储位置没有对应关系 因此查找一个元素 必须经过关键码的多次比较 顺序查找时间复杂度为O(N) 平衡树中为树的高度#xff0c;即O( l o g 2 N log_2 N log2​N) 搜索效率 搜索过程中元素的比较次数 理想的搜索方法#xff1a… 一、哈希概念 顺序结构以及平衡树中 元素关键码与存储位置没有对应关系 因此查找一个元素 必须经过关键码的多次比较 顺序查找时间复杂度为O(N) 平衡树中为树的高度即O( l o g 2 N log_2 N log2​N) 搜索效率 搜索过程中元素的比较次数 理想的搜索方法不经任何比较 一次直接从表中获取想要的元素 构造一种存储结构 通过某种函数(hashFunc)使元素的存储位置 与它的关键码之间建立一一映射的关系 就能在查找时通过该函数直接找到该元素 向该结构中 插入元素 根据待插入元素的关键码 以此函数计算出该元素的存储位置并按此位置 进行存放 搜索元素 对元素的关键码进行同样的计算 把求得的函数值当做元素的存储位置 在结构中按此位置取元素比较 若关键码相等则搜索成功 该方式即为 哈希(散列)方法 哈希方法中使用的转换函数称为 哈希(散列)函数 构造出来的结构称为 哈希表(Hash Table)(或者称散列表) 例如 数据集合{176459}; 哈希函数设置为 hash(key) key % capacity; capacity 存储元素底层空间总的大小 二、哈希冲突 不同关键字通过相同的哈希函数 计算出相同的哈希地址 该种现象称为哈希冲突或哈希碰撞 把具有不同关键码 而具有相同哈希地址的数据元素称为“同义词” 11、21、31…数据经过哈希函数计算都为1 都插入在下标为1的地方便会冲突 三、哈希函数 引起哈希冲突的一个原因可能是 哈希函数设计不够合理 哈希函数设计原则 哈希函数的定义域必须包括 需要存储的全部关键码 而如果散列表允许有m个地址时 其值域必须在0到m-1之间哈希函数计算出来的地址能均匀分布在 整个空间中哈希函数应该比较简单 常用哈希函数 直接定址法 取关键字的某个线性函数为散列地址 HashKey A*Key B 优点简单、均匀 缺点需要事先知道关键字的分布情况 使用场景适合查找比较小且连续的情况 面试题字符串中第一个只出现一次字符 除留余数法 设散列表中允许的地址数为m 取一个不大于m 但最接近或等于m的质数p作为除数 按照哈希函数 Hash(key) key% p(pm) 将关键码转换成哈希地址 四、哈希冲突解决 解决哈希冲突两种常见方法 闭散列和开散列 4.1 闭散列 闭散列也叫开放定址法 当发生哈希冲突时 如果哈希表未被装满 说明哈希表中必然还有空位置 那么可以把key存放到 冲突位置的“下一个” 空位置中去 那如何寻找下一个空位置呢 线性探测 从发生冲突的位置开始 依次向后探测 直到寻找到下一个空位置为止 线性探测优点实现简单 线性探测缺点一旦发生哈希冲突 所有的冲突连在一起容易产生数据“堆积” 即不同关键码占据了可利用的空位置 使得寻找某关键码的位置需要许多次比较 导致搜索效率降低 二次探测 线性探测的缺陷是 产生冲突的数据堆积在一块 这与其找下一个空位置有关系 因为找空位置的方式就是挨着往后逐个去找 因此二次探测为了避免该问题 找下一个空位置的方法为 H i H_i Hi​ ( H 0 H_0 H0​ i 2 i^2 i2 )% m 或者 H i H_i Hi​ ( H 0 H_0 H0​ - i 2 i^2 i2 )% m 其中i 1,2,3… H 0 H_0 H0​是通过 散列函数Hash(x)对元素的关键码 key 进行计算得到的位置m是表的大小 研究表明当表的长度为质数且表装载因子 a不超过0.5时新的表项一定能够插入 而且任何一个位置都不会被探查两次 因此只要表中有一半的空位置 就不会存在表满的问题 在搜索时可以不考虑表装满的情况 但在插入时必须确保表的装载因子a不超过 0.5如果超出必须考虑增容 因此比散列最大的缺陷就是空间利用率 比较低这也是哈希的缺陷 4.2 开散列 开散列法又叫链地址法(开链法) 首先对关键码集合用散列函数计算散列地址 具有相同地址的关键码归于同一子集合 每一个子集合称为一个桶 各个桶中的元素通过一个单链表链 接起来各链表的头结点存储在哈希表中 如图 将哈希地址相同的元素链接在同一个桶下面 在实际应用中 开散列比闭散列更实用 哈希桶负载因子更大 空间利用率高极端情况也有解决方案 哈希桶极端情况 所有元素在同一个桶 为了避免这种情况 当桶超过一定高度 将该桶转换为红黑树结构 五、哈希桶的模拟实现 5.1 基本框架 namespace HashBucket // 哈希桶 { template class K, class Vstruct HashNode{pairK, V _kv;HashNodeK, V* _next; // 单链表的方式链接HashNode(const pairK, V kv): _next(nullptr), _kv(kv){}};template class K, class Vclass HashTable{typedef HashNodeK, V Node;public:private:vectorNode* _tables;size_t _n 0; // 存储的有效数据个数 }; }5.2 插入元素 哈希桶的增容 若哈希表的大小为0 将哈希表的初始值设置为10 若哈希表的负载因子等于1 创建一个新表大小是原表的两倍 用新表的哈希函数计算旧表的每个 元素在新表的映射位置 将旧表的每个元素头插进新表 bool Insert(const pairK, V kv) {// 去重, 插入之前先查找有没有相同的元素if (Find(kv.first))return false;// 负载因子 1时扩容if (_n _tables.size()){// 哈希表大小为0将哈希表初始值设为10size_t newsize _tables.size() 0 ? 10 : _tables.size() * 2;vectorNode* newtables(newsize, nullptr);for (auto cur : _tables){while (cur) // current不为空, 把挂着的数据一个一个移到新表{Node* next cur-_next;size_t hashi cur-_kv.first % newtables.size();// 头插到新表cur-_next newtables[hashi];newtables[hashi] cur;cur next;}}_tables.swap(newtables);}size_t hashi kv.first % _tables.size();// 头插Node* newnode new Node(kv);newnode-_next _tables[hashi];_tables[hashi] newnode;_n;return true; }Node* Find(const K key) {if (_tables.size() 0)return nullptr;size_t hashi key % _tables.size();Node* cur _tables[hashi];while (cur){if (cur-_kv.first key){return cur;}cur cur-_next;}return nullptr; }bool Erase(const K key) {size_t hashi key % _tables.size();Node* prev nullptr;Node* cur _tables[hashi];while (cur){if (cur-_kv.first key){if (prev nullptr){_tables[hashi] cur-_next;}else{prev-_next cur-_next;}delete cur;return true;}else{prev cur;cur cur-_next;}}return false; }✨✨✨✨✨✨✨✨ 本篇博客完感谢阅读 如有错误之处可评论指出 博主会耐心听取每条意见 ✨✨✨✨✨✨✨✨
http://www.w-s-a.com/news/536068/

相关文章:

  • 国内做网站的企业网站结构有哪些类型
  • 南通网站建设制作公司苏州好的网站公司名称
  • 咸阳做网站开发公司哪家好珠海公司制作网站
  • 深圳网站建设好不好医疗网站前置审批
  • 做ic什么网站好安溪网站建设
  • 网站建设 慕课企业文化标语经典
  • 做短视频的网站都有哪些简约 时尚 高端 网站建设
  • 浦口区网站建设售后服务建设一个网站多少钱
  • 做个小网站大概多少钱广州h5网站
  • 360免费建站视频wordpress标签显示图片
  • 创建简易个人网站国外做网站被动收入
  • 轻定制网站建设网页培训哪个机构好
  • 青岛海诚互联做网站好吗计算机软件开发培训机构
  • 德钦网站建设如何在网站上做用工登记
  • 创意品牌网站云服务
  • 个人备案网站可以做商城展示如何制作网页二维码
  • 网站建设php教程视频百度seo 站长工具
  • 外包小程序两个相同的网站对做优化有帮助
  • 网站备案主体修改wordpress 导航图片
  • 怎么建设网站数据库用vs代码做网站
  • 运营企业网站怎么赚钱动漫制作专业概念
  • 宜春网站建设推广网络推广工作好干吗
  • 网站程序0day平顶山市做网站
  • 企业网站名称怎么写哔哩哔哩网页版官网在线观看
  • 直播网站建设书籍阿里巴巴网站建设销售
  • 肇庆企业自助建站系统郴州网站建设解决方案
  • 长沙专业做网站排名游戏开发大亨内购破解版
  • 网站推广适合女生做吗网站如何开启gzip压缩
  • 做外单阿里的网站建站平台那个好
  • 全国性质的网站开发公司关于网站开发的请示