《数据结构打卡》第6天

《数据结构打卡》第6天

1、明明什么都没有学懂,却还是感觉异常的累。
2、今天应该是看视频学习最长的一天了,但是一去做题(题目是昨天学的内容),发现整个人都废了,基本全忘。

今天把"查找"这章的视频过了一遍,题目没去做,学了什么东西还是让我回想一下吧,以下是查找这一章的考查范围。
在这里插入图片描述

1、顺序查找法。
查找表:是由同一类型的数据元素(或记录)构成的集合。
ASL:关键字的平均比较次数,也叫平均查找长度。
(1)顺序查找(线性查找)
应用范围:适用于顺序表或线性链表表示的静态查找表,表内元素可以无序分布。

typedef struct{ //定义一个顺序查找表
	Elem Type *R //表基址
	int Length //表长
}SSTable ST //定义顺序表ST

ST.R[i].key
ST是顺序表,R是数据元素,key是数据元素中第i个位置的值。

//顺序查找的算法如下
..........

(2)顺序查找算法分析:
查找第i个元素要比较_n-i+1_ 次,查找失败则比较__n+1_次。
查找成功时的平均查找长度。
ASL=(1+2+…+n)/n = (n+1)/2
(3)顺序查找的特点:
优点:算法简单,逻辑次序无要求
缺点:平均查找长度太长(ASL),时间效率太低

2、折半查找法。
每次查找将待查记录所在区间缩小一半。
二分查找法

//折半查找的算法先留空吧,我估计后面的算法都不会考....但是也不一定。

(1)查找成功或查找失败的比较次数

(2)折半查找算法分析
平均查找次数log2(n+1)+1,平均查找长度 O(log2n)
优点:查找效率比顺序查找要高
缺点:只适用于有序表,且限于顺序存储结构,(对线性链表无效)。

3、二叉排序树。
使用动态查找表。

发布了20 篇原创文章 · 获赞 0 · 访问量 447

猜你喜欢

转载自blog.csdn.net/qq_41240204/article/details/105458812