第七章学习小结

一、思维导图

第七章学习小结_第1张图片

 

 

二、重要知识点

1.线性表的查找

1.1顺序查找

设置监视哨的顺序查找算法:

int Search_Seq(SSTable ST,KeyType key)

{

ST.R[0].key = key;

for(i = ST.length;ST.R[i].key != key:--i);

return i;

}

注:当n很大时,不宜采用顺序查找,时间花费较大

1.2折半查找

int Search_Bin(SSTable ST,KeyType key)

{

low = 1;high = ST.length;

while(low <= high)

{

mid = (low + high)/2;

if(key == ST.R[mid].key) return mid;

else if(key < ST.R[mid].key) high = mid - 1;

else if(key > ST.R[mid].key) low = mid +1;

}

return 0;

}

注:(1)执行条件low<=high不能改为low

(2)修改条件high= mid-1不能改为high=mid,若改为后者,当key在表中或者key大于表中所有元素时,程序正常进行,而其他情况则会进入死循环

(3)数据量太大或太小均不适合使用该方法

1.3分块查找法:除表本身以外,还需要建立一个“索引表”,其中的索引项包括两项内容,即关键字项和指针项

优点:插入和删除比较容易

2.树表的查找

2.1二叉排序树(二叉链表存储结构)

性质:中序遍历一棵二叉树时可以得到一个结点值递增的有序序列

 折半查找长度为n的顺序表的判定树是唯一的,而含有n个结点的二叉排序树不唯一

最坏情况下:若树的深度为n,ASL=(n+1)/2

3.散列表的查找

冲突:对不同的关键字可能得到同一散列地址

同义词:具有相同函数值的关键字对该散列函数来说称作同义词

在用线性探测法处理的过程中,可能会发生两个第一个散列地址不同的记录争夺同一个后继散列地址的现象,即二次聚集,是线性探测法的一大缺点

三、pta作业和实践

精确率:针对预测结果而言,它表示的是预测为正的样本中有多少是真正的正样本。
召回率:针对原来的样本而言,它表示的是样本中的正例有多少被预测正确了

实践:一开始把这道题想得很复杂,嵌套了多个循环,多次使用二分查找,导致最后一个测试点运行超时,后来问了同学,发现只需要修改一点点,

即合并处理key<=的情况,if(a[mid] >= key) high = mid-1;当时头脑没反应过来,因为是顺序排列,所以仍按这种方法,最后退出循环时low总是指向等于key的值或大于key的最小值

四、优缺点

优点:课后及时回顾,作业及时完成,不懂的愿意花时间去专研

缺点:没能预习全面,要么缺少,要么不够仔细全面;对于老师略讲,自己觉得不重要的部分,课后没有花太多时间去了解及时弥补不足

 

你可能感兴趣的:(第七章学习小结)