- 41
- 0
- 约9.54千字
- 约 10页
- 2019-11-11 发布于湖北
- 举报
。
实验一 二分搜索算法实验报告
一. 实验目的
1、 理解分治算法的概念和基本要素;
2、 理解递归的概念;
3、 掌握设计有效算法的分治策略;
4、通 过二分搜索技术学习分治策略设计技巧;
二.实验内容及要求
1. 使用二分搜索算法查找任意 N 个有序数列中的指定元素。
2. 通过上机实验进行算法实现。
3. 保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。
4. 至少使用两种方法进行编程。
三.实验原理
二分搜索算法也称为折半查找法,它充分利用了元素间的次序关系,采用分治策略,可
在最坏的情况下用 O(log n) 完成搜索任务。
【基本思想】将 n 个元素分成个数大致相同的两半,取 a[n/2] 与欲查找的 x 作比较,如
果 x=a[n/2] 则找到 x ,算法终止。如果 xa[n/2] ,则我们只要在数组 a 的左半部继续搜索 x
(这里假设数组元素呈升序排列)。如果 xa[n/2] ,则我们只要在数组 a 的右半部继续搜索
x 。
二分搜索法的应用极其广泛, 而且它的思想易于理解。 第一个二分搜索算法早在 1946 年
就出现了,但是第一个完全正确的二分搜索算法直到 1962 年才出现。 Bentley 在他的著作
《Writing Correct Programs 》中写道, 90%的计算机专家不能在 2 小时内写出完全正确的二
。
1
。
分搜索算法。问题的关键在于准确地制定各次查找范围的边界以及终止条件的确定,正确地
归纳奇偶数的各种情况,其实整理后可以发现它的具体算法是很直观的。
方法一:直接查找
穷举法遍历
方法二:递归查找
#includestdio.h
#define MAX 30
int BinarySearch(int a[],int x,int left,int right)
{
if(leftright){
return -1;
}
else{
left=(left+right)/2;
if(x==a[left])
return left;
else
{
if(xa[left])
BinarySearch(a,x,left+1,right);
else
BinarySearch(a,x,left*2-right,left+1);
}
}
}
main()
{
int a[MAX];
int found,x,n,i,j,p;
printf( 输的个数 \n);
scanf(%d,n);
printf( 数组数据 \n);
for(i=0;in;i++)
{
scanf(%d,a[i]);
}
for (i=0;in-1;i++)
{
您可能关注的文档
- 店铺优化的正确思路.pdf
- 店铺运营的规划.pdf
- 店铺整体运营方案.pdf
- 动感地带品牌传播案例分析.pdf
- 动态电力系统第5章.pdf
- 动态系统仿真.pdf
- 对症下药硬盘坏道检测与修复全攻略.pdf
- 多年的SEO市场影响了搜索引擎优化的格局5-vorg..pdf
- 多线程与异常处理.pdf
- 多信源园区网流媒体流量均衡系统的研究ok.pdf
- 统编版2025年春季新版七年级下册历史 第21课 明清时期的科技与文化 教案.docx
- 雅安雨城法院书记员招聘考试真题库2025.docx
- 2026届安徽合肥市高考一模高考语文试卷试题(含答案详解).pdf
- 【专题研究】国内外城市更新研究的最新进展.pdf
- 【专题研究】老旧城区改造居民满意度影响因素研究——以遂宁市老旧城区改造为例.pdf
- 【专题研究】关于旧城空间改造理论与创意设计案例的几点思考.pdf
- 西藏拉萨市高三下学期期末物理备考重点详解.docx
- 泾县法院书记员招聘笔试真题2025.pdf
- 2026年春【苏教版】-六年级数学下册-面积的变化.pptx
- 2026年春【苏教版】-六年级数学下册-7.pptx
原创力文档

文档评论(0)