本文目录导航:
考研数据结构怎样温习?
考研数据结构可以依据以下几点来温习:1、看清华大学出版社 严蔚敏 《数据结构》的教材,C言语版本,这个是最基本的。
清华大学计算机考硕士、博士都是考这本书,也是考研官网介绍的教材。
数据结构有些是C++言语形容的,有些是JAVA言语形容的,假设你报考的高校没有特意要求,普通就用严的C言语版本的教材。
2、买一本专门的考研数据结构科目标温习指点,尽量把外面的标题都做一遍,这个有几个系列的,基本每年考研都出一版,外面有国度统考和各个大学历年考研标题,答案详细。
比如《天勤计算机考研高分笔记系列》,还有霸道系列等。
3、介绍一本很有深度的数据结构习题集,李春葆的《数据结构习题与解析》。
4、你所报考的大学的历年专业课真题是重中之重,每年考试的标题类型或者相似。
数据结构常识点
1、承袭不同
HashMap承袭了AbstractMap,AbstractMap成功了Map接口
HashTable承袭了Dictionary类
2、线程安保不同
HashMap不是线程安保的,HashTable是线程安保的
3、准许null值
HashMap准许key和value为空,而HashTable不准许
4、遍历方式成功不同
HashMap的迭代器是fail-fast迭代器,HashTable的enumerator迭代器不是fail-fast的
5、哈希值的经常使用不同
HashMap从新计算哈希值,HashTable间接经常使用对象的哈希值
6、初始容量和扩容方式不同
HashMap初始大小为16,扩容大小必定是2的指数
HashTable初始大小为11,扩容大小为old*2+1
7、hashmap新增红黑树结构
当碰撞链表过长时,就把链表转为红黑树
1、间接定址法
取主要字或主要字的某个线性函数值为散列地址
特点:主要字延续时较繁难,但主要字不延续时将形成内存单元的少量糜费
2、数字剖析法
取主要字中取值比拟平均的若干数位作为哈希值。
特点:实用于主要字所有已知,并要对主要字中每一位启动剖析
3、平方取中法
取主要字平方后两边几位作为哈希地址
特点:由于平均值的两边局部跟主要字的每一位都无关,发生随机值的概率较大
4、分段叠加法
按哈希表地址位数将哈希表分为位数相等的几段(最后一段可以较短),而后将这几局部相加,舍弃最高位的进位获取哈希值。
详细分为:移位法与折叠法
移位法:将每局部低位对其相加
折叠法:从一段向另一端沿宰割线来回折叠(奇数段为正序,偶数段为倒序)
例如主要字2020,哈希表长度为1000,则应把主要字分红3位一段
移位法获取105,折叠法获取907
5、伪随机数法
驳回伪随机函数作为哈希函数
6、除留余数法
用主要字除以某个不大于哈希表长度的数,取余数作为哈希值。
1、开明定址法
当主要字key的哈希值p=H(key)发生抵触时,以p为基础发生新的哈希值p1,假设p1仍抵触,则发生p2,以此类推。
函数方式如下:
Hi = (H(key) + di) % m

依据di的不同分为
(1)线性探测
di = 1, 2, 3, ……,(m-1)
(2)平方探测
d=1,-1,2,-2,…,k,-k( k<=m/2 )
(3)伪随机探测
di = 伪随机数序列
2、再哈希法
结构多个不同的哈希函数,当发生抵触时,经常使用新的哈希函数
3、链地址法
将散列到同一位置的抵触元素存入一个链表中
4、建设一个公共溢出区
将哈希表分为基本表和溢出表
左旋:
右旋
红黑树是一颗不凡的二叉查找树,除了二叉查找树的一切性质
1、若恣意节点的左子树不为空,则左子树上一切节点的值均小于它的根节点的值
2、若恣意节点的右子树不为空,则右子树上一切节点的值均大于它的根节点的值
3、恣意节点的左右子树也为二叉查找树
4、没有键值相等的节点
还满足
1、每个节点要么是红的要么是黑的
2、根节点是黑的
3、每个叶节点(null节点)是黑的
4、假设一个节点是红的,那么它的两个儿子都是黑的
5、恣意节点到叶节点(null节点)的每条门路都蕴含相反数目标黑节点
红黑树保障没有一条门路比另一条门路长出两倍,保障了自身是凑近平衡的二叉树,能保障在最坏的状况下查找的期间复杂度为O(logN),而二叉查找树最坏为O(N)
红黑树就义了严厉的高度平衡为代价,只需求局部到达局部平衡条件,降落了对旋转的要求,从而提高了性能。
红黑树能够以O(logN)的期间复杂度启动增加,删除,查找。
由于它的设计,任何不平衡都可以在三次旋转之内处置。
1、相比BST(二叉搜查树)
红黑树的最长门路不大于最短门路两倍,保障了最差搜查效率为O(logN),而二叉搜查树最差效率会到达O(N)
2、相比AVL(平衡二叉树)
(1)红黑树的查问性能略逊于平衡二叉树,由于它比平衡二叉树会最多多一层。
(2)红黑树在拔出删除上要优于平衡二叉树,红黑树经常使用非严厉的高度平衡换取增删节点时旋转次数的缩小,任何不平衡都会在三次旋转之内处置,然而平衡二叉树旋转次数有时会比红黑树要多。
所以红黑树的拔出删除效率更高。
数据结构怎样学
数据结构学习方法如下:
1.选用一本适宜的书
一分介绍普林斯顿的这本橙书:《算法 第四版》,是我以为最适宜拿来入门的。
在橙书中淡化了算法剖析和证实,强调了成功和运行,并且经过一些幽默的习题对比显示了低劣的算法与数据结构在期间和空间上的高效。
2.编程成功和运行
了解一个数据结构与编程成功其完整配置是齐全不同的应战。
自己入手亲身成功一些基础数据结构(如排序,汇合只,图和字符串处置)的简化版 API 能够极大的优化对数据结构外部细节的了解。
3.重休学习
由于算法与数据结构所涵盖的常识较多,所以一本书里的内容或者都须要分几个阶段去学习,不免会忘记之前的内容。
我倡导矫捷学习,尽量快的往后学习。
假设一个常识点真实问题,可以存疑生吞活剥”,很多时刻经过前面的学习,前面的一些内容就人造明了。
而后重休学习。