- 算法设计与分析
 - 家
 - 算法基础知识
 - DAA - 简介
 - DAA - 算法分析
 - DAA-分析方法
 - 渐近符号和先验分析
 - 时间复杂度
 - 马斯特定理
 - DAA - 空间复杂性
 - 分而治之
 - DAA-分而治之
 - DAA - 最大最小问题
 - DAA-归并排序
 - DAA-二分查找
 - 施特拉森矩阵乘法
 - 唐叶算法
 - 河内塔
 - 贪心算法
 - DAA-贪婪法
 - 旅行商问题
 - Prim 的最小生成树
 - 克鲁斯卡尔的最小生成树
 - Dijkstra 的最短路径算法
 - 地图着色算法
 - DAA-分数背包
 - DAA - 带截止日期的作业排序
 - DAA - 最佳合并模式
 - 动态规划
 - DAA-动态规划
 - 矩阵链乘法
 - 弗洛伊德·沃歇尔算法
 - DAA - 0-1 背包
 - 最长公共子序列
 - 旅行商问题| 动态规划
 - 随机算法
 - 随机算法
 - 随机快速排序
 - 卡格的最低削减
 - 费舍尔-耶茨洗牌
 - 近似算法
 - 近似算法
 - 顶点覆盖问题
 - 设置封面问题
 - 旅行推销员近似算法
 - 排序技巧
 - DAA-快速排序
 - DAA-冒泡排序
 - DAA——插入排序
 - DAA-选择排序
 - DAA——希尔排序
 - DAA-堆排序
 - DAA——桶排序
 - DAA——计数排序
 - DAA - 基数排序
 - 搜索技巧
 - 搜索技术介绍
 - DAA - 线性搜索
 - DAA-二分查找
 - DAA - 插值搜索
 - DAA - 跳转搜索
 - DAA - 指数搜索
 - DAA - 斐波那契搜索
 - DAA - 子列表搜索
 - DAA-哈希表
 - 图论
 - DAA-最短路径
 - DAA - 多级图
 - 最优成本二叉搜索树
 - 堆算法
 - DAA-二叉堆
 - DAA-插入法
 - DAA-Heapify 方法
 - DAA-提取方法
 - 复杂性理论
 - 确定性计算与非确定性计算
 - DAA-最大派系
 - DAA - 顶点覆盖
 - DAA - P 级和 NP 级
 - DAA-库克定理
 - NP 硬课程和 NP 完全课程
 - DAA - 爬山算法
 - DAA 有用资源
 - DAA - 快速指南
 - DAA - 有用的资源
 - DAA - 讨论
 
设计与分析 - 搜索技术
在上一节中,我们讨论了各种排序技术及其使用案例。然而,执行排序背后的主要思想是以有序的方式排列数据,以便更容易地搜索排序数据中的任何元素。
搜索是在大量数据中查找特定记录的过程,该记录可以是单个元素或一小块。数据可以有多种形式:数组、链表、树、堆和图等。随着当今数据量的不断增加,有多种技术来执行搜索操作。
数据结构中的搜索技术
可以对数据结构应用各种搜索技术来检索某些数据。仅当搜索操作返回所需的元素或数据时,才称其成功;否则,该搜索方法不成功。
这些搜索技术分为两类。他们是 -
顺序搜索
区间搜索
顺序搜索
顾名思义,顺序查找操作就是顺序遍历数据的每个元素来查找想要的数据。对于此类搜索,数据不需要采用排序方式。
示例- 线性搜索
图 1:线性搜索操作
区间搜索
与顺序搜索不同,区间搜索操作要求数据是有序的。这种方法通常是按间隔搜索数据;可以通过将数据划分为多个子部分或跳过索引来搜索元素来完成。
示例- 二分搜索、跳转搜索等。
图 2:二分查找操作
评估搜索技术
通常,并非所有搜索技术都适合所有类型的数据结构。在某些情况下,顺序搜索是优选的,而在其他情况下,间隔搜索是优选的。对这些搜索技术的评估是通过检查每种搜索方法在特定输入上所花费的运行时间来完成的。
这就是渐近符号发挥作用的地方。要了解有关渐近符号的更多信息,请单击此处。
简单地解释一下,程序可以运行三种不同的时间复杂度情况。他们是 -
最佳案例
平均情况
最坏的情况下
我们主要关注最好情况和最坏情况的时间复杂度,因为平均情况很难计算。由于运行时间取决于程序的输入量,因此最坏情况的时间复杂度最能描述任何算法的性能。
例如,线性搜索的最佳情况时间复杂度为O(1),其中在第一次迭代中找到所需元素;而最坏情况的时间复杂度是O(n),即程序遍历完所有元素仍然没有找到元素。这被标记为不成功的搜索。因此,线性搜索的实际时间复杂度被视为O(n),其中 n 是输入数据结构中存在的元素数量。
许多类型的搜索方法用于搜索各种数据结构中的数据条目。其中一些包括 -
线性搜索
二分查找
插值搜索
跳转搜索
哈希表
指数搜索
子列表搜索
斐波那契搜索
无处不在的二分搜索
我们将在接下来的章节中详细介绍每种搜索方法。