Hashing
哈希方程
哈希方程有很多情况,
例如除留余数法:
h(k) = k mod m
如果m是质数而且不接近2或10的幂,效果就很好。
乘法哈希法:
h(k) = a × k mod 2^w >> (w−r) (>>是right-shift操作)
a是任意w位整数;(a应该是奇数且不接近2的幂)。
w是你正在使用的机器的字的长度。
m = 2^r。
全域哈希法:
h(k) = (a × k + b mod p) mod m
p是大质数。
a和b是0到p-1之间的随机整数。
这是一个很好的哈希函数。
// 哈希相关的算法和密码学相关的哈希用法笔者在现代密码学文章中介绍过,感兴趣的可以去看一下。
字典(Dictionaries)
给定一个字典D,其内容由<key: value>形式的对组成,我们需要定义以下操作:
插入:
D[key]=value
删除:
delete(D[key])
搜索:
value=D[key]
value == nil //如果键没有被存储
字典的行为类似于索引非整数的数组。
字典构成了所有现代计算机语言的一部分:
C++:
Std::map<key_type, value_type> dictionary_name;
Java:
Map dictionary_name = new Hashtable();
Map dictionary_name = new HashMap();
Map dictionary_name = new LinkedHashMap();
python:
字典数据类型-通过引用创建
en_fr = {
"red" : "rouge", "green" : "vert","blue" : "bleu", "yellow":"jaune"