哈希探查的三种方法
来源:互联网 发布:淘宝鸿星尔克 编辑:程序博客网 时间:2024/05/22 00:17
#include <stdio.h>#include <string.h>#include <iostream>#include <vector>using namespace std;const int MAXSIZE = 100;int hash[MAXSIZE];int MOD = MAXSIZE - 1; //小于MAXSIZE的一个质数vector<int> hashTable[MAXSIZE];/* 线性探查int LinearProbing(int num){ int p = num % MOD; if (p < 0) //这一步是必须的,不然有可能会出现访问数组下标为负数 { p += MOD; } int cnt = 0; while (hash[p] != -1 && hash[p] != num) //如果这个位置,已经被占了,并且不是这个num { cnt++; p = (p + 1) % MOD; if (cnt == MAXSIZE) { return -1; } } return p;}二次探查int QuadraticProbing(int num){ int p = num % MOD; if (p < 0) { p += MOD; } int cnt = 1; while (hash[p] != -1 && hash[p] != num) { cnt++; p = (p + cnt * cnt) % MOD; if (cnt > MAXSIZE) { return -1; } } return p;}*/int HashFind(int num){ int p = num % MOD; if (p < 0) { p += MOD; } return p;}int main(){ for (int i = 0; i < MAXSIZE; i++) { hashTable[i].clear(); } int num; int p; while (cin >> num) { p = HashFind(num); hashTable[p].push_back(num); if (num == -1) { break; } } for (int i = 0; i < MAXSIZE; i++) { p = HashFind(i + 1); for (vector<int>:: iterator it = hashTable[p].begin(); it != hashTable[p].end(); ++it) { if (*it == i + 1) { cout << "find it" << endl; break; } } } memset(hash, -1, sizeof(hash)); return 0;}
0 0
- 哈希探查的三种方法
- 数据探查(三)
- centos启动卡住探查方法
- 在解决哈希碰撞中二次探查法模数必须是4k+3的质数的原因
- 探查 Struts 包的含义
- MySQL 的事件探查器
- MySQL 的事件探查器
- SQL事件探查器的妙用
- SQL SERVER:事件探查器的使用
- 哈希表的线性探查法搜索算法
- 事务处理三种的三种方法
- 三列布局的三种方法
- 事务处理的三种方法
- 事务处理的三种方法
- 定时的三种方法
- 三种方法的优先级
- $()的三种方法-jquery
- 代理的三种方法
- [LeetCode]Climbing Stairs
- Linux下使用函数打印程序堆栈错误的方法
- 如何不用循环打印数字1到n
- 人民币小写转换为大写
- FFMPEG 库移植到 VC 需要的步骤
- 哈希探查的三种方法
- JavaScript 键盘事件处理
- 黑马程序员——学习日记17 java IO流 (下)
- AIX存储架构的构成概述
- JVM调优设置
- sqlserver insert 触发器
- POJ 3735 Training little cats 解题报告(矩阵构造+快速幂优化)
- android的签名 命令改密码等
- SQL的一些小问题