数据结构:第七章学习小结

 

 二、实例

1、无序和有序情况下,ASL的不同

 

 2、分块查找中,索引表示如何建立的

 

 3、判断二叉树是否是AVL树

 如果不是AVL树,要分情况进行调整: LL, RR, LR, RL

4、用线性探测再散列处理和二次探测再散列冲突,并求ASL

 

 ASL = (1*4 + 2*2 + 3 + 6 + 5)/ 9

心得体会:

发现代码的实现能力和对知识的掌握,在一定程度上,是不成正比的。薄弱的基础导致了在完成编程作业时很吃力,在不断地提交的过程中,不断修改,从中分析自己的代码,又或是通过查询,学习他人的方法,虽然最后还是没能够满分提交,但是在这个过程中,也能学到已经没有掌握的知识。挫败感虽有,但是更有前进的动力。

在不断的深入学习这种,难度在不断提高,对知识的掌握能力也有着很高的要求。我觉得在这过程中,对于我来说,最好的方法就是跟着不断思考,动手去完成课堂或课后的题目,不要得过且过。

(担心思维导图看不清,以下是文字版)

 1 线性表的查找
 2     顺序查找
 3         方法:把待查关键字key存入表头(作哨兵),从后向前逐个比较,可免去查找过程中每一步都要检测是否查找完毕,加快速度
 4         只用比较N次
 5         有序和无序的ASL不同,无序中每个元素查找概率不同。
 6         N很大时,不适宜
 7     折半查找(二分查找)
 8         设表长为n, low, high,mid分别指向待查元素所在区间的上界、下界和中点,K为给定值;判断所要查找的元素是否与mid所在关键字相等。
 9         性能分析:每次查找时间都缩小一半,时间复杂度O(log2N)
10         局限:
11             基于顺序表存储,且一定要有序
12             适合一次排序,多次查找。因此针对静态数组
13             数据量太小,不需要二分
14             数据量太大,不能用。因为二分数据需要数组来存储,而数组的内存空间必须是连续的,找不到存储如此大规模数据的连续内存空间
15     分块查找
16         即分成若干子表,要求每个子表中的数值都比一块中数值小(但子表内未必有序)。然后将各子表中的最大关键字构成一个索引表,表中还要包含每个子表的起始地址(即头指针)
17         块间有序,块内无序
18         适用情况:线性表既要快速查找又经常动态变化,则可采用分块查找
19         优点:易于插入和删除,无需进行大量移动
20         缺点:要增加一个索引表的存储空间并对初始索引表进行排序运算
21 
22 树表查找
23     二叉排序树
24         可以看作是一个有序表
25         适合深度小
26     平衡二叉树
27         所有结点的左、右子shu深度之差的绝对值<=1
28         平衡因子:左右子树高度差
29         要不断调整平衡,调整最小不平衡子树
30 
31 散列表的查找
32     直接算出位置,与数据量无关
33         记录在数组中的存储位置P与其关键字key之间存在对应关系:H(key) = P
34         H函数称为哈希函数
35         优点:查找速度极快O(1),与元素个数无关
36         相关术语
37             散列函数:转换函数,将关键字转换为位置(下标)
38             散列表
39             冲突:不同的关键字映射到同一个散列地址
40                 冲突解决:开放地址法
41                     线性探测再散列
42                     二次(平方)探测再散列
43                     随机探测再散列
44                 链地址法:将相同散列地址的链成一个单链表,适合表长不定
45             同义词:H函数相等的关键字
46             除留余数法:所选P要小于表长的最大质数
47 
48 基本概念
49     查找表:
50         同一类型的数据元素构成的集合
51     关键字:
52         数据元素中某个数据项的值
53         只存储关键字的意义其实并不大,还要记录地址/在表中的序号
54     查找
55         动态查找
56             查找的同时,需要对表进行修改操作(如插入/删除)
57         静态查找
58     平均查找长度(ASL)
59         取决于
60             散列函数
61             处理冲突的方法
62             散列表的填装因子 = M / S( M = 元素个数,S = 数组的长度)
思维导图文字版

 

posted @ 2020-06-28 01:03  钟静宜  阅读(235)  评论(1编辑  收藏  举报