刷题笔记 (一) : 查找

1、二分查找的前提是有序,二分查找要求元素有序、顺序存储

2、二分查找的最坏时间复杂度为O(log n)

实例:有序表中有1000个元素,则用二分查找查找元素X最多需要比较10次
解析:二分查找的最坏时间复杂度为O(log n),把n等于1000带入得到,log1000>9,<10,取整那么至少10

3、用概率查找改进查找效率,是经过多次查找以后使得查找次数越多的元素查找速度越快

解析:查找次数多的意思是多次查找中某几个目的数多次出现,那么既然是改进查找,肯定不能是折半(折半只有一种顺序),所以采用顺序查找,将经常要查的那一些往前面靠,所以查找地更快一些

实例:假设顺序表中包含5个关键字{a,b,c,d,e},它们的查找概率分别为{0.25,0.3,0.2,0.1,0.15},为了使查找成功时的平均查找长度达到最小,则顺序表中数据元素的出现顺序是
b,a,c,e,d

解析:让概率大的查找次数少就可以保证总的查找次数最小,所以对序列依照查找概率排序,概率最大的找的次数最小

4、二分查找法:middle =(right +left )/2,当>middle 时,left =middle +1;反之,right =middle -1

实例:有序数组1 2 3 4 5 6 7 8 9查找3的二分查找序列是
解析:
索引:0 1 2 3 4 5 6 7 8 
值:   1 2 3 4 5 6 7 8 9
第一步:left = 0;right = 8;middle = (0+8)/2=4;为5
第二步:left = 0;right = 3;middle = (0+3)/2=1;为2
第三步:left = 2;right = 3;middle = (2+3)/2=2;为3
停止

5、对长度为 n 的线性表排序,最坏情况下时间复杂度:

  • 二分法查找为O(log n) ;
  • 顺序查找法为 O ( n );
  • 分块查找时间复杂度与分块规则有关;
  • 哈希查找时间复杂度为 O(1) ,因其通过计算 HashCode 来定位元素位置,所以只需一次即可

6、BFS(广度优先)生成树与DFS(深度优先)生成树

解析:http://data.biancheng.net/view/45.html

实例:BFS生成树的树高比DFS生成树的树高小或者相等
解析:BFS是广度优先遍历,DFS是深度优先遍历。
对于一些特殊的图,比如只有一个顶点的图,其BFS生成树的树高和DFS生成树的树高相等。
一般的图,根据图的BFS生成树和DFS树的算法思想,BFS生成树的树高比DFS生成树的树高小。

7、KMP算法

https://www.sohu.com/a/336648975_453160 

8、能在O (1) 时间内访问线性表的第i个元素的结构是单链表

9、Hash表的查找效率取决于散列函数、处理冲突的方法和装填因子。

  • 冲突的产生概率与装填因子(表中记录数与表长之比)的大小成正比,即装填得越满越容易发生冲突
  • 采用合适的处理冲突的方式避免产生聚集现象,也将提高查找效率,例如用拉链法解决冲突时就不存在聚集现象,用线性探测法解决冲突时易引起聚集现象

10、给定一个整数sum,从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum,最快的平均时间复杂度是O(n)

11、分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的块号,然后再在相应的块内进行顺序查找

12、顺序查找方法和折半查找方法的平

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值