`
zhangyu8374
  • 浏览: 94736 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基本算法连载(1)-顺序搜索与二分搜索

阅读更多
顺序搜索
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;
}

分析:
  1. 假设数组拥有N个元素,对于不成功的搜索,总是搜索N个元素;对于成功的搜索,平均搜索次数为N/2。
  2. 假设每个数组元素被搜索到的概率相等,那么平均搜索次数可以这样计算:(1+2+...+N)/N = (N+1)/2
  3. 对于排序数组,相关性质不变。

二分搜索
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);
}
}
}
分析:
  1. 假设Tn表示在最坏情况下二分搜索需要比较的次数,那么有Tn=Tn/2+1,其中n>=2,T1=1
  2. 求解递归式,可以得到二分搜索检查元素个数永远不超过lgn+1。
  3. 数组必须是已经排好序的。
分享到:
评论

相关推荐

    基本算法---计数.sb3

    基本算法---计数.sb3

    算法分析与设计-实验二 二分查找实验报告.docx

    在二分查找算法中,每次比较都是与序列中间的元素进行,从而将搜索范围限制在中间元素的一侧。 首先,我们需要理解二分查找的适用条件:输入数据必须是有序的。对于无序数据,二分查找无法发挥其优势。在本实验中,...

    二分搜索算法

    ### 二分搜索算法知识点详解 #### 一、算法简介 二分搜索(Binary Search),又称折半查找,是一种在有序数组中查找特定元素的高效算法。其基本思想是通过将待查找值与数组中间元素进行比较,不断缩小查找范围,...

    查找算法:二分查找、顺序查找

    这里我们将深入探讨两种常见的查找算法:二分查找和顺序查找。 **一、顺序查找** 顺序查找是最基础的查找算法之一。它的工作原理是从数据集(如数组或列表)的第一个元素开始,逐个比较目标值与当前元素,直到找到...

    麻雀搜索算法SSA-Kmean-Transformer-GRU故障诊断分类【含Matlab源码 5979期】.zip

    CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:Main .m; 数据; 调用函数:其他m文件;...4.4.5 萤火虫算法FA/差分算法DE-Kmean-Transformer-GRU分类

    查找算法--顺序查找

    数据结构用C++的实现,蓝桥杯,ACM,算法基础,C++入门

    算法实现-多种编程语言实现二分搜索算法详解

    内容概要:本文详细介绍了使用Python、Java 和 C++三种主流编程语言实现二分搜索算法的方法。二分搜索算法是一种高效的查找方法,用于在有序列表中查找指定元素的位置。算法的基本思想是在每一次迭代中将当前范围...

    数据结构与算法分析--C语言描述_数据结构与算法_

    查找算法如线性查找、二分查找,用于定位数据;图算法如深度优先搜索(DFS)和广度优先搜索(BFS),用于遍历图结构;还有动态规划、贪心算法、回溯法等,应用于解决复杂问题。 C语言中的算法实现往往涉及指针操作...

    数据结构-算法

    这里采用了一个简单的线性搜索算法,逐个检查顺序表中的元素,直到找到指定元素或遍历完整个列表。 ### 4. 在指定位置插入元素(InsertList) 该函数用于在顺序表的指定位置插入一个新的元素。具体实现如下: ```c...

    算法-理论基础- 二叉树- 顺序存储结构(包含源程序).rar

    4. 搜索树操作:如果二叉树被用作搜索结构,如二叉搜索树,那么顺序存储结构的效率会非常高,因为节点的顺序保证了左子树的元素小于父节点,右子树的元素大于父节点,从而简化了搜索过程。 四、源程序分析 资源中...

    数据结构与算法 -李春葆 实验报告-顺序表

    《数据结构与算法》实验报告主要探讨了顺序表这一线性表的实现方式,通过具体的C语言编程实现,包括顺序表的初始化、查找、插入和删除等基本操作。以下是相关知识点的详细说明: 1. **线性表的逻辑结构**: 线性表...

    顺序表与单链表基本运算算法.doc

    顺序表与单链表基本运算算法 顺序表是一种基本的数据结构,它是由一组连续的存储单元组成的,每个存储单元都可以存储一个数据元素。顺序表的基本运算包括创建顺序表、打印顺序表、查找顺序表中的元素、插入元素到...

    顺序栈各种基本运算算法的实现

    栈中数据用数组储存,通过top(),push(),pop()基本的函数用以实现其功能。 参见博客:http://blog.csdn.net/xiaowei_cqu/article/details/7748152

    实验卡1-顺序表1

    实验卡1-顺序表1是天津师范大学软件学院数据结构课程的一个实验项目,旨在通过实际编程操作,让学生理解和掌握顺序表的基本操作,包括产生、查找、插入、删除等。顺序表是一种线性数据结构,其中元素按照线性顺序...

    数据结构与排序算法------通过代码示例,讲解:数据结构和9种排序算法。.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    算法技术手册-中文版

    搜索算法则是另一大重点,如二分查找、深度优先搜索(DFS)和广度优先搜索(BFS)。这些算法在数据检索、路径查找等问题中起到关键作用。比如,在大规模数据中查找特定元素,二分查找能有效减少查找时间。 此外,...

    二分查找算法的演示-二分查找法

    二分查找算法的演示 算法-二分查找法 一个样式更加美观大方的HTML页面示例,其中包括了二分查找算法的演示。 页面主体使用白色背景,加上轻微的阴影和圆角边框,使页面看起来更加精致。 输入框和按钮使用了更加现代...

    算法设计---作业---实验1

    二分搜索是一种经典的搜索算法,它可以在有序数组中快速查找某个元素。其核心思想是将数组分为两半,并不断缩小搜索范围,直到找到目标元素或确定元素不存在。 我们使用 C++ 语言实现了二分搜索算法,如下所示: ``...

    《数据结构与算法》-李春葆 实验报告-典型查找算法实践-二分查找、分块索引查找

    在本实验报告中,我们关注的是两种常见的查找算法——二分查找和分块索引查找,它们都是在数据结构和算法领域中极为重要的概念。这两种查找算法主要应用于处理有序序列,能够有效地提高查找效率。 首先,二分查找是...

    算法导论-中文版

    以上是基于《算法导论》中文版的部分内容整理出的关键知识点,这些知识点不仅覆盖了算法的基本概念与分类,还深入探讨了算法的复杂度分析、常见的算法类型及其应用,并且介绍了几种高级算法的概念与设计技巧,最后还...

Global site tag (gtag.js) - Google Analytics