保研数据结构复习

选择排序

基本思想:每一趟从待排序的元素中选出最小的元素,顺序放在已排好序的子表的最后,直到全部元素排序完成。

适用于从大量的元素中选择一部分排序元素,例如从10000个元素中选择出关键字大小为前10位的元素

堆排序(树形选择排序)

最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。

Hash函数的构造方法

目标:使所有元素的哈希地址尽可能均匀地分布在m个连续内存单元上

1.直接定址法

2.除留余数法

最经常使用的一种哈希函数

3.数字分析法

hash冲突的解决方法:

装填因子:指哈希表中已存入的元素数n与哈希地址空间大小m的比值,即a=n/m。

装填因子越小,冲突的可能性就越小

开放定址法

1.线性探测法

容易产生堆积问题。

2.平方探测法

可以避免出现堆积问题

缺点:

不一定能探测到哈希表上的所有单元,但最少能探测到一半单元。

拉链法:

所有哈希地址为i元素对应的结点构成一个单链表。在这种方法中,哈希表中每个单元中存放的不再是元素本身,而是相应同义词单链表的首结点指针。

优点:

处理冲突简单,且无堆积现象。

由于拉链法中各单链表上的结点空间是动态申请的,故它更适合于造表前无法确定表长的情况。

缺点:指针需要额外的空间。

拓扑排序的方法

1.从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它

2.从图中删除该顶点,并且删去从该顶点发出的全部有向边

3.重复上述两步,直到剩余的图中不再存在没有前驱的顶点为止。

结果有两种:

1.图中全部结点都被输出,即该图中所有顶点都在其拓扑序列中,这说明图中不存在回路。

2.图中顶点未被全部输出,这说明图中存在回路。

所以可以通过对一个有向图进行拓扑排序,看是否产生全部顶点的拓扑排序序列来确定该图中是否存在回路

猜你喜欢

转载自blog.csdn.net/m0_67105022/article/details/123533942