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

大连做网站哪家服务好天津seo网站推广

大连做网站哪家服务好,天津seo网站推广,公司做网站怎么赚钱,计划网站搭建1.HashMap原理 当散列函数计算出某个元素的插入位置,而该位置上的空间已不再可用时,最简单的办法就是循序往下一一寻找,直到找到一个可用空间为止,只要表格array足够大,总是能找到一个安身立命的空间,但是…
1.HashMap原理

当散列函数计算出某个元素的插入位置,而该位置上的空间已不再可用时,最简单的办法就是循序往下一一寻找,直到找到一个可用空间为止,只要表格array足够大,总是能找到一个安身立命的空间,但是要花多少时间就很难说了。进行元素搜寻操作时,道理也相同,如果散列表计算出来的位置上的元素值与我们的搜寻目标不符,就循序往下一一寻找,直到找到吻合者或者直到遇上空格元素。

分析线性探测的表现,需要两个假设:一表格足够大,二每个元素都够独立。在此假设之下,最坏的情况是线性寻访整个表格,平均情况则是寻访一半表格。所以线性探测的一个突出问题是:平均插入成本的成长幅度,远高于负载系数的成长幅度,这样的现象在hashing过程中称为主集团primary clustering(此时我们手上有的是一大团已被用过的方格,插入操作极有可能在主集团所形成的泥泞中奋力爬行,不断解决碰撞问题)。

2.代码解析
  1. 模板类设计

    • 使用模板泛化键类型(KeyType),支持整数、字符串等类型。
    • table 存储键值,occupied 标记槽位是否被占用。
  2. 核心方法

    • hashFunction:计算键的哈希值(取绝对值的模运算)。
    • insert:插入键值,冲突时线性探测下一个空闲槽位。
    • search:从哈希位置开始顺序查找键值。
    • remove:标记指定键的位置为空闲。
  3. 显示哈希表

    • 遍历所有槽位,输出键值或“空”

注意事项

  1. 负载因子

    • 最佳负载因子为 0.6~0.7,超过时建议扩容哈希表。
    • 扩容可通过重新哈希(Rehashing)实现,将现有键重新插入到更大的表中。
  2. 删除优化

    • 本实现使用标记删除法(occupied 数组),避免移动元素。
    • 若需完全删除节点,需遍历后续槽位并前移元素,但会增加复杂度。
  3. 冲突解决

    • 线性探测的局限性在于可能导致聚集(Clustering),改用二次探测或双重哈希可缓解。
#include <iostream>
#include <vector>
#include <string>
#include <utility> // for std::pair
using namespace std;
template<typename KeyType, typename ValueType>
class HashTable {
private:vector<pair<KeyType, ValueType>> table;vector<bool> occupied; // 标记槽位是否被占用int size;// 哈希函数:简单取模int hashFunction(const KeyType& key) const {return abs(key) % size;}
public:// 构造函数,初始大小为质数(例如101)HashTable(int size = 101) : size(size), table(size), occupied(size, false) {}// 插入操作void insert(const KeyType& key, const ValueType& value) {int index = hashFunction(key);while (occupied[index]) {index = (index + 1) % size;}table[index] = pair<KeyType, ValueType>(key, value);occupied[index] = true;}// 查找操作bool search(const KeyType& key, ValueType& result) const {int index = hashFunction(key);while (occupied[index]) {if (table[index].first == key) {result = table[index].second;return true;}index = (index + 1) % size;}return false;}// 删除操作bool remove(const KeyType& key) {int index = hashFunction(key);while (occupied[index]) {if (table[index].first == key) {occupied[index] = false;return true;}index = (index + 1) % size;}return false; // 未找到键}
};int main() {// 定义哈希表类型:键为int,值为stringHashTable<int, string> ht(7); // 哈希表大小为7// 插入测试数据ht.insert(23, "Alice");ht.insert(14, "Bob");ht.insert(55, "Charlie");ht.insert(31, "David");ht.insert(77, "Eve");ht.insert(89, "Frank");ht.insert(10, "Grace"); // 哈希值为3 (10%7=3),探测到索引3被占用,插入到4// 查找测试string result;cout << endl << "查找键31对应的值:";if (ht.search(31, result)) {cout << result << endl;} else {cout << "未找到" << endl;}// 删除测试ht.remove(77);return 0;
}

http://www.dtcms.com/wzjs/323506.html

相关文章:

  • 高等教育出版社b2b电子商务平台seo优化包括哪些内容
  • 河北手机网站制作企业百度移动排名优化软件
  • 青岛企业网站seo技巧百度一下百度搜索
  • wordpress付款后查看内容快速排名软件seo系统
  • 网站建设与管理学什么百度提交链接
  • 做网站 创业如何提高自己的营销能力
  • 上海自适应网站建设中小企业管理培训课程
  • 西安做网站南通公司百度关键词推广怎么做
  • asp.net网站项目建设免费b站推广网址有哪些
  • 什么公司时候做网站软文营销文章案例
  • 自己如何做公司网站国家域名注册服务网
  • 网站制作需要网站制作cilimao磁力猫最新版地址
  • 企业网站留言关于手机的软文营销
  • 昆明二建建设集团网站百度上海分公司地址
  • 长沙做网站要微联讯点很好企业网络推广服务
  • 广州市网站建设分站价格佛山seo联系方式
  • 整站seoseo优化官网seo关键词排名系统
  • 装修公司网站建设厦门seo网站推广优化
  • 个人或主题网站建设 实验体会百度地图推广电话
  • 做电子商务系统网站建设东莞企业网站模板建站
  • 在凡科做网站卫星电视安装视频
  • 电子方案网站建设方案优化服务公司
  • 网站内链分析产品营销方案
  • 东昌网站建设黄石市seo关键词优化怎么做
  • 做网站没有学历的人会吗国家卫生健康委
  • ASP做购物网站视频媒体公关是做什么的
  • 营销型网站怎么做营销型网站策划方案
  • 网页开发和游戏开发seo发展前景怎么样啊
  • 徐州手机网站制作公司哪家好h5网站制作平台
  • 网站建设项目需求书百度首页排名优化价格