查找

一.查找算法的评价标准

ASL:查找关键字的平均次数

二.顺序查找

如名,一个个查找,不限数据排序规则和存储格式

优化:

(1)将查找表的数据有序排放(递增或者递减)

(2)查找判定树

(3)当关键字的概率不同
可按被查概率降序排列,查找成功时ASL变小

三.折半查找

(1)使用条件:仅适用于有序的顺序表(因为顺序表有随机访问特效)

(2)代码实现:(/代表取整)

(3)查找判定树

关键字:左小于中小于右;且失败节点为成功节点的空域数量,即n+1


如果mid是向上取整的话,则左边比右边多一个

需要注意的是,查找判断树一定是平衡二叉树,且最下面一层是不满的,所以树高为log2(n+1)向上取整

四.分块查找

(1)用折半查找查索引,如果最终索引表停在low>high,则在low所在分块中查找,如果low超出索引表范围,则查找失败。索引表的查找可用顺序或者折半,但索=索引内进行顺序查找

(2)查找效率分析

五.二叉排序树

(1)构造与查找

代码有两种形式,另一种为递归实现,但递归实现会使空间复杂度变为O(n)

(2)二叉排序树的插入

(3)二叉排序树的删除

1.如果z只有左子树或者右子树,则让z的子树成为父节点的子树,代替z的位置

2.若z有左右两颗子树,则让z的直接后继替代z,然后删去这个后继,从而转化为第一种情况

(4)时间复杂度
最好的O(log2n),最坏的O(n)

六.平衡二叉树

(1)插入
最重要的为插入后的调整,直接看书

(2)删除

能看懂最好,看不懂直接看书或者看视频

七.红黑树

(1)出现的原因

(2)定义

左根右,根叶黑,不红红,黑路同(从一个节点出发,到所有叶子节点经过的黑节点数量相同)

黑高:从某一节点出发到任一空叶节点的路径上黑节点的总数
推论:黑高为n的树,节点树最少为多少?

 最少情况:共n层黑节点的满树情况,最少2的n次方减一个

(3)性质

1.从根节点到叶子节点的最长路径不大于最短路径的两倍
2.有n个节点的高度h不大于2log2(n+1)

(4)插入
看书或者视频,不过考的概率不大

八.b树,b+树和散列查找
看书,内容不多,但比较琐碎,多练多做

7 声望
1 粉丝
0 条评论
推荐阅读
排序
一.直接插入排序相当于把大的元素挪到后面去优化:折半插入排序如果是对链表进行直接插入排序,虽然移动元素的次数变少了,但是最坏情况的比较次数仍为n的平方,所以时间复杂度仍为n的平方二.希尔排序时间复杂度...

悠悠我心阅读 314

利用Jackson序列化实现数据脱敏
在项目中有些敏感信息不能直接展示,比如客户手机号、身份证、车牌号等信息,展示时均需要进行数据脱敏,防止泄露客户隐私。脱敏即是对数据的部分信息用脱敏符号(*)处理。

京东云开发者1阅读 414

封面图
架构师日记-从数据库发展历程到数据结构设计探析 | 京东云技术团队
起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代,关系数据库理论的提出,以表格形式...

京东云开发者1阅读 271

封面图
排序算法
####排序算法一、插入排序(1)算法思想(以升序举例):对于一个已经有序的序列,又来一个数x,从倒数第一个数进行比较,如果x比这个数小,这个数就往后挪。(2)代码实现 {代码...} (3)改进:希尔排序思想:...

月亮给蒙娜丽莎阅读 659

【牛客小白月赛70】A-F题解【小d和超级泡泡堂】【小d和孤独的区间】【小d的博弈】【小d和送外卖】
🎈 作者:Eriktse🎈 简介:19岁,211计算机在读,现役ACM银牌选手🏆力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)🚀🎈 阅读原文获得更好阅读体验:[链接]

Eriktse阅读 576

双向带头循环链表
优点:a、支持随机访问,很多算法都需要随机访问(快排、二分)b、cpu高速缓存命中率更高(cpu读数据时,先去找缓存,如果没有就去内存把数据加载到缓存。在加载时它不是只加载一个数据,而是附近一片数据,所以...

月亮给蒙娜丽莎阅读 520

栈和队列
栈和队列一、关于模拟栈使用何种模型1.顺序表:尾插尾删很快,缓存利用率高,但是要扩容2.单链表:使用链表头作为栈顶来插入删除数据也很快3.带头双向循环链表:也可以,时间也是O(1)二、栈的模拟实现 {代码...} ...

月亮给蒙娜丽莎阅读 474

7 声望
1 粉丝
宣传栏