理论基础 —— 查找
【概述】
查找是在具相同类型的记录构成的集合中,找出满足给定条件的记录,给定的查找条件是多样的,为便于讨论,将查找条件限制为 “匹配”,即查找关键码等于给定值的记录。
在查找中,常将数据元素称为记录,将可以标识一个记录的某个数据项称为关键码,关键码的值称为键值,若关键码可以唯一标识一个记录,则称其为主关键码,反之,称为次关键码。
【查找分类】
1.静态查找
静态查找是指不涉及插入、删除操作的查找,其在查找不成功时,只返回一个不成功的标志,查找的结果不改变查找集合。
其适用于以下两种情景:
- 查找集合一旦生成,只对其进行查找
- 对查找集合经过一段时间查找后,集中地进行插入、删除等操作
2.动态查找
动态查找是指涉及插入、删除操作的查找,其在查找不成功时,需要将查找的记录插入到查找集合中,查找的结果可能会改变查找集合。
其适用于查找与插入、删除操作在同一阶段进行的情景。
【查找结构】
一般而言,各种数据结构都会涉及到查找操作,但在某些应用中,查找操作是最主要的操作,为提高查找效率,需要设计专门的查找结构。
常见的查找结构有:
- 线性表:适用于静态查找,主要采用顺序查找、折半查找等
- 树表:适用于动态查找,主要采用二叉排序树查找等
- 散列表:静态查找、动态查找均适用,主要采用哈希查找
【查找的性能】
查找算法的基本操作通常是将记录的关键码与给定值进行比较,其运行时间主要消耗在关键码的比较上,因此应以关键码的比较次数来度量查找算法的时间性能,其时间复杂度是问题规模 n 和待查关键码在查找集合中的位置 k 的函数,记为:T(n,k)
对于查找算法,关心的是其整体性能,故将关键码的比较次数的数学期望值定义为平均查找长度(ASL)。
对于查找成功的情况,有:,其中,Pi 为查找表中第 i 个记录的概率,Ci 为找到第 i 个记录所需的关键码的比较次数。
对于查找不成功的情况,平均查找长度为查找失败对应的关键码的比较次数。
【分类】
1.线性表的查找技术
1)顺序查找:点击这里
2)二分查找:点击这里
3)插值查找:点击这里
4)斐波那契查找:点击这里
2.树表的查找技术
1)二叉排序树:点击这里
2)平衡二叉树(AVL 树):点击这里
3.哈希查找:点击这里
理论基础 —— 查找相关推荐
- 理论基础 —— 查找 —— 平衡二叉树
[概述] 二叉排序树的查找效率取决于二叉排序树的形态,而构造一棵形态均匀的二叉排序树与结点的插入次序有关,但结点的插入次序不是随人的意志决定的,这就要求我们找到一种动态平衡的方法,对于任意给定的关键码 ...
- 理论基础 —— 查找 —— 二叉排序树
[概述] 二叉排序树(Binary Search Tree),又称二叉查找树,其本质是按一定的顺序进行构造的二叉树. 其递归定义如下: 若其左子树不空,则左子树上所有结点的值均小于根结点的值 若其右子 ...
- 理论基础 —— 查找 —— 斐波那契查找
[概述] 斐波那契查找,其利用了黄金分割原理来对二分查找进行了改进. 黄金分割又称黄金比例,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约 ...
- 理论基础 —— 查找 —— 插值查找
[概述] 以查字典为例,在英文字典中查 "apple" 时,下意识的会翻开前面的书页,当查 "zoo" 时,下意识的翻开一定是后面的书页,显然,此时还绝对不是从 ...
- 理论基础 —— 查找 —— 顺序查找
[概述] 顺序查找是最基本的查找技术之一,其基本思想是:从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值 k 相比较,若相等则表示查找成功:若扫描结束仍没有找到关键字等于 k 的 ...
- 理论基础 —— 查找 —— 二分查找
[概述] 二分查找又称折半查找,其要求线性表中的记录必须按关键码有序,且必须采用顺序存储. 其基本思想是:用给定值 k 先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功:若不相 ...
- 代码随想录Day01:数组理论基础、二分查找、移除元素
目录 数组理论基础.二分查找.移除元素 1.数组理论基础 2.Leetcode704.二分查找 方法一 左闭右闭: 方法二 左闭右开: 方法三 左开右开: 方法四 左开右闭: 3.Leetcode27 ...
- 代码随想录算法训练营第一天 | 数组理论基础,704. 二分查找,27. 移除元素
今日学习的文章链接如下: 代码随想录 (programmercarl.com) 代码随想录 (programmercarl.com) 704. 二分查找 自己看到题目的第一想法 拿到题目首先想办法,一 ...
- 【代码随想录算法练习】| DAY01 | JavaScript | 数组理论基础,704. 二分查找,27. 移除元素
详细解析:请看Carl老师的讲解 数组基础理论 下标从 0 开始 内存空间地址是连续的 增删元素时,会涉及其他元素地址的变动 704. 二分查找 | 点击查看力扣对应题目 二分法,也叫折半查找法,这里 ...
最新文章
- 金立M2017续航出色不仅是因为电池大,还有超强快充
- boost::fibers::unbuffered_channel用法的测试程序
- 重载VerifyRenderingInServerForm
- 高考填报志愿计算机操作技巧,高考志愿填报技巧经验
- 蓝桥杯2017初赛-分巧克力-二分
- 再见 XShell 和 ITerm 2,是时候拥抱全平台高颜值终端工具 Hyper 了!
- 单片机学c语言还是python好_单片机开发用哪种语言最好?
- arm-arago-linux-gnueabi 下载,arm-arago-linux-gnueabi问题
- ZetCode 教程翻译计划正式启动 | ApacheCN
- Idea在plugin的marketplace中一直查不到东西安装插件
- mysql新增字段会锁表_MySQL锁(二)表锁:为什么给小表加字段会导致整个库挂掉?...
- Ubuntu下在Apache中运行Keystone
- PowerDesigner--comment和name互相复制
- 计算机网络那些事~(二)
- wap页面在微信内置浏览器浏览遇到的问题
- unity中移动的九种方法
- 苹果台式电脑怎么使用计算机,苹果笔记本键盘怎么用_苹果笔记本电脑键盘的使用方法-win7之家...
- 1062. 洪水填充
- 系统分析设计——如何识别类
- PhotoShopCS6从入门到精通--笔记