顺序搜索Programmer每天都碰到顺序搜索,其code snippet:
/*
* 顺序遍历数组,搜索v值是否存在。如果存在,返回相应的位置索引,
* 否则返回-1
*/
int sequentialSearch(int a[],int v,int l,int r){
int i;
for(i = l;i <= r;i++){
if(v == a[i])
return i;
}
return -1;
}
分析:
- 假设数组拥有N个元素,对于不成功的搜索,总是搜索N个元素;对于成功的搜索,平均搜索次数为N/2。
- 假设每个数组元素被搜索到的概率相等,那么平均搜索次数可以这样计算:(1+2+...+N)/N = (N+1)/2
- 对于排序数组,相关性质不变。
二分搜索code snippet:
/*
* 二分搜索,非递归实现
* 假设:数组元素已经按序排列
*/
int binarySearch(int a[],int v,int l,int r){
int m;
while(l<=r){
m = (l+r)/2;
if(v == a[m])
return m;
if(v > a[m]){
l = m + 1;
}else{
r = m - 1;
}
}
return -1;
}
/*
* 二分搜索,递归实现
*/
//dataForExperiment数组定义及初始化
int binarySearch(int v,int l,int r){
if(l > r){
return -1;
}
int m = (l + r)/2;
if(v == dataForExperiment[m]){
return m;
}else{
if(v > dataForExperiment[m]){
return binarySearch(v,m+1,r);
}else{
return binarySearch(v,l,m-1);
}
}
}
分析:
- 假设Tn表示在最坏情况下二分搜索需要比较的次数,那么有Tn=Tn/2+1,其中n>=2,T1=1
- 求解递归式,可以得到二分搜索检查元素个数永远不超过lgn+1。
- 数组必须是已经排好序的。
分享到:
相关推荐
- **线性搜索与二分搜索**:在有序的顺序表中,二分搜索可以大大提高查找效率。 这个压缩包中的“数据结构和算法-3-顺序表.pdf”很可能是详细讲解顺序表的教程或笔记,包括其原理、操作、优缺点以及实践示例。通过...
数据结构-基本算法-顺序栈(学生时代源码,调试可运行)
10. **查找算法**:如顺序查找、二分查找、跳表查找等,它们在不同的数据结构上具有不同的效率。 11. **字符串处理**:字符串是字符序列,C++中的`std::string`类提供了丰富的字符串操作功能,如拼接、查找、替换等...
在二分查找算法中,每次比较都是与序列中间的元素进行,从而将搜索范围限制在中间元素的一侧。 首先,我们需要理解二分查找的适用条件:输入数据必须是有序的。对于无序数据,二分查找无法发挥其优势。在本实验中,...
2. **查找算法**:查找算法主要包括顺序查找、二分查找、哈希查找等。二分查找在有序数组中具有很高的效率,时间复杂度为O(logn),而哈希查找则通过键值映射实现快速查找,理想情况下可达到O(1)的时间复杂度。 3. *...
常见的算法包括排序(如冒泡排序、快速排序、归并排序)、查找(如线性查找、二分查找)、图遍历(如深度优先搜索、广度优先搜索)以及动态规划等。这些算法不仅要求正确性,还应关注效率,通常用时间复杂性和空间...
#### 4.1 顺序查找与二分查找 - 顺序查找流程 - 二分查找条件 - 比较两种查找方式的效率 #### 4.2 图论基础 - 图的基本概念(顶点、边、邻接矩阵/表) - 图的存储结构 - 图的遍历算法(深度优先搜索、广度优先搜索...
这里我们将深入探讨两种常见的查找算法:二分查找和顺序查找。 **一、顺序查找** 顺序查找是最基础的查找算法之一。它的工作原理是从数据集(如数组或列表)的第一个元素开始,逐个比较目标值与当前元素,直到找到...
最常用的二分搜索变体由 Hermann Bottenbruch 于 1962 年首次发布,此后没有明显变化。下面我将描述几个具有改进性能的新变体。最值得注意的变体是单向二分搜索,它在小于 100 万个 32 位整数的数组上的执行速度比...
数据结构用C++的实现,蓝桥杯,ACM,算法基础,C++入门
内容概要:本文详细介绍了使用Python、Java 和 C++三种主流编程语言实现二分搜索算法的方法。二分搜索算法是一种高效的查找方法,用于在有序列表中查找指定元素的位置。算法的基本思想是在每一次迭代中将当前范围...
在计算机科学中,大整数算法和二分搜索算法是两个重要的编程概念,尤其是在处理大量数据和优化搜索效率时显得尤为关键。 大整数算法主要应用于处理超过标准数据类型(如int、long)能表示的最大整数值。在Java中,`...
查找算法如线性查找、二分查找,用于定位数据;图算法如深度优先搜索(DFS)和广度优先搜索(BFS),用于遍历图结构;还有动态规划、贪心算法、回溯法等,应用于解决复杂问题。 C语言中的算法实现往往涉及指针操作...
CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白...4.4.5 萤火虫算法FA/差分算法DE优化TCN-LSTM-Multihead-Attention回归预测 4.4.6 其他优化算法优化TCN-LSTM-Multihead-Attention回归预测
这个压缩包“算法-理论基础- 线性表- 顺序表(包含源程序).rar”包含了关于线性表特别是顺序表的理论知识和实际源代码,是学习数据结构与算法的重要资源。 线性表的顺序存储结构,也称为顺序表,是最简单也是最...
4. 搜索树操作:如果二叉树被用作搜索结构,如二叉搜索树,那么顺序存储结构的效率会非常高,因为节点的顺序保证了左子树的元素小于父节点,右子树的元素大于父节点,从而简化了搜索过程。 四、源程序分析 资源中...
任静敏,潘大志《带权重的贪心萤火虫算法求解0-1背包问题》,用MATLAB实现改进萤火虫算法(WGFA),对基本的萤火虫算法进行改进,加入线性递减惯性权重,用贪心算法修复不可行解,加入变异算子提高全局搜索能力。
《数据结构与算法》实验报告主要探讨了顺序表这一线性表的实现方式,通过具体的C语言编程实现,包括顺序表的初始化、查找、插入和删除等基本操作。以下是相关知识点的详细说明: 1. **线性表的逻辑结构**: 线性表...
基于差分进化与灰狼算法的混合优化算法DEGWO——一种高效的智能优化方案,基于差分进化与灰狼算法的混合优化算法DEGWO:平衡全局与局部搜索的智能优化策略,群智能算法改进--灰狼11--一种基于差分进化和灰狼算法的混合...
顺序表与单链表基本运算算法 顺序表是一种基本的数据结构,它是由一组连续的存储单元组成的,每个存储单元都可以存储一个数据元素。顺序表的基本运算包括创建顺序表、打印顺序表、查找顺序表中的元素、插入元素到...