在哈希方法中,元素保存在哈希表中,元素在表中的位置的位置有哈希函数(hashing function)决定,表中的每一个位置成为单元(cell)或桶
注意:使用哈希方法使对某个元素的·访问时间不依赖于表中的元素个数。这意味着对哈希表中一个元素的全部操做都是O(1)。即没必要非要经过比较才能找到一个具体的元素,或定位所给元素的相应位置。使用哈希方法,只须要计算一个具体的元素应该放在哪里便可。若是两个元素或关键字映射到表中同一位置的情形称为冲突(collision),将每一个元素映射到表中惟一位置的哈希函数称为理想哈希函数html
若是知道数据集的大小,则经验法推知哈希表的大小是数据集的150%。若是不知道数据集的大小,须要动态调整大小时,即建立一个比原表更大的新哈希表,多是原来的两倍大,将原表中全部元素插入到新表中,而后放弃原表。防止表变满性能降低,可使用装载因子(load factor)java
抽取(extraction)是一种哈希函数,仅使用元素值或关键字中的一部分来计算保存元素的位置。git
Hashcode(key)=Math.abs(key)%p
2)折叠方法
将关键字的各部分加在一块儿计算下标。移位折叠法是将这些各部分相加得下标,边界折叠是让关键字的若干子段反转再相加。算法
3)平方取中方法
 ; ;关键字自乘,而后使用抽取方法从平方结果的中部抽取相应的位获得下标数据库
4)基数转化方法
关键字转换为另外一种数值基数api
5)数字分析方法
抽取关键字中的指定位并进行处理从而获得下标数据结构
6)长度依赖方法
关键字和关键字的长度以某些方式组合起来,或直接当作下标使用,或再进一步使用其余方法进行处理而获得下标。app
7)Java语言中的哈希函数
java.lang.Object定义了方法hashcode,它根据对象在内存中的位置返回一个整数,可是最好仍是为特定的类定义一个具体的哈希函数。数据库设计
1)链式方法
将哈希表当作几何的表而不是各独立单元的表,因此每一个单元保存一个指针,指向于表中该位置相关的元素的集合。利用额外的空间做为溢出区来保存每一个表位置相对应的链表,映射到表中某个位置的首个元素保存到那个位置,映射到该位置的下一个元素也一块儿保存,以下图所示。
函数
2)开放地址方法
在表中寻找不一样于该元素原先哈希到另外一个开放的位置。
总共有三种方法:一是线性探测法,即线性探测空白单元,若是数据放在10这个位置,但10已经满,就放在11,依次类推下去。二是二次探测方法,二次探测的步数是原始位置相隔的步数的平方。三是双哈希方法,当基本哈希函数致使冲突时,将使用提供的第2个哈希函数解决问题
此方法博主并非特别理解,附上学习参考博客哈希表之开放地址的三种方法
-2)从开放地址实现删除元素
7种实现方法:Hashtable、HashMap、HashSet、IdentityHashMap、LinkedHashSet、LinkedHashMap、WeakHashMap
两种遍历方式:
1)广度优先(相似于程序遍历)
实现方法:经过一个队列保存遍历过的顶点顺序,以便按出队顺序去访问这些顶点的邻接顶点
2)深度遍历(相似于先序遍历)
两种算法:
1):Prim算法:从点入手,适合稠密图
2): Kruskal算法:从边入手,适合稀密图(直接找最小权值边)。注:两个节点若同属于一棵树,则它们应该有共同的根结点
在数据库建模的过程当中,须要运用PowerDesigner进行数据库设计,这个不但可让人直观的理解模型,并且能够充分的利用数据库技术,优化数据库的设计。
其次就是E-R图,在数据库系统概论中有涉及到,这个实体关系图中,一个实体对于一个表,实体、属性与联系是进行系统设计时要考虑的三个要素,也是一个好的数据库设计的核心。
设计参考资料:使用powerDesigner画ER图
右图是根据小组app所画的初步ER图
(statistics.sh脚本的运行结果截图)
错题暂未给出答案
Few things are impossible in themselves; and it is often for want of will, rather than of means, that man fails to succeed.事情不多有根本作不成的;其因此作不成,与其说是条件不够,不如说是因为决心不够。我就不信了,个人java必定会好的。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 188 | 1/1 | 25 | 算法分析 |
第二周 | 70/258 | 1/2 | 15/40 | 《构建之法》7-9章 |
第三周 | 474/732 | 1/3 | 20/60 | 查找和排序 |
第四五六周 | 1313/2045 | 4/7 | 12/72 | 栈和队列 |
第七周 | 890/2935 | 1/8 | 14/86 | 树 |
第八周 | 913/3848 | 1/9 | 20/106 | 二叉查找树 |
第九周 | 890/3738 | 1/10 | 13/119 | 堆 |
第十周 | 637/4374 | 2/12 | 18/137 | 图 |
第十一周 | 170/4544 | 1/13 | 15/152 | 哈希方法 |
第十二周 | 、 |
(有空多看看现代软件工程 课件 软件工程师能力自我评价表)