实验名称: 二分搜索算法

实验地点:

实验目的:

  1. 理解分治算法的概念和基本要素;
  2. 理解递归的概念;
  3. 掌握设计有效算法的分治策略;
  4. 通过二分搜索技术学习分治策略设计技巧;

实验原理:

二分搜索算法也称为折半查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。

实验内容:

  1. 使用二分搜索算法查找任意N个有序数列中的指定元素。
  2. 通过上机实验进行算法实现。
  3. 保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。
  4. 至少使用两种方法进行编程。

源代码:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;
//这个算法仅适用于有序序列
int a[1000];
int BinarySearch1(int a[], int left, int right, int x)
{int mid;mid = (left + right) / 2;if(left < right) {if (x == a[mid])return mid;else if (x < a[mid])return BinarySearch1(a, left, mid - 1, x);//递归调用前一半数组elsereturn BinarySearch1(a, mid + 1, right, x);//。。。后一半。。。}return 0;
}
int BinarySearch2(int a[], int left, int right, int x)
{int mid;while (left <= right) {mid = (left + right) / 2;if (x == a[mid])return mid;else if (x < a[mid])right = mid - 1;//递归调用前一半数组elseleft = mid + 1;//。。。后一半。。。}return 0;
}
int main()
{int x, n, flag = 0;cin >> x >> n;for (int i = 1; i <= n; i++)cin >> a[i];flag = BinarySearch2(a, 1, n, x);if (flag)printf("%d", flag);elseprintf("no answer");return 0;
}

实验结果:

BinarySearch1:

BinarySearch2:

心得与体会:

  1. 理解分治算法的概念和基本要素;
  2. 理解递归的概念;
  3. 掌握设计有效算法的分治策略;
  4. 通过二分搜索技术学习分治策略设计技巧;
  5. 分析二分算法的时间和空间复杂度;
  6. 通过不同方式的二分算法增进对分治算法的理解。

参考文章

https://blog.csdn.net/zsnowwolfy/article/details/81039836

https://blog.csdn.net/weixin_45929067/article/details/104781020

C++——《算法分析与设计》实验报告——二分搜索算法相关推荐

  1. 算法分析与设计实验报告 ——二分搜索程序算法的实现

    算法分析与设计实验报告 --二分搜索程序算法的实现 实验目的及要求 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧 ...

  2. 算法分析与设计实验报告——二分搜索算法的实现

    算法分析与设计实验报告--二分搜索算法的实现 目录: 算法分析与设计实验报告--二分搜索算法的实现 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与 ...

  3. 算法分析与设计实验报告——实现汽车加油问题

    算法分析与设计实验报告--实现汽车加油问题 目录: 算法分析与设计实验报告--实现汽车加油问题 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与讨论 ...

  4. 中北大学算法分析与设计实验报告一(BF算法)

    中北大学算法分析与设计实验报告一(BF算法) 1.实验名称 实验一 算法基础实验:数理基础与串匹配程序设计 2.实验目的 以字符串匹配问题为例,结合C等编程语言和链表.堆.栈等数据结构知识,基于BF算 ...

  5. 算法分析与设计实验报告

    计算机算法分析与设计实验报告 实验一:递归回溯 阶乘(Factorial) #include<iostream> using namespace std; int factorial(in ...

  6. 中北大学算法分析与设计实验报告六(最大团问题)

    中北大学算法分析与设计实验报告六(最大团问题) 1.实验名称 实验六 回溯与分支限界算法实验 2.实验目的 题目:最大团问题 强化学生利用回溯算法和优化处理实际问题的能力. 3.训练知识点集群 (1) ...

  7. 算法分析与设计实验报告三——动态规划算法

    一.实验目的 掌握动态规划方法贪心算法思想 掌握最优子结构原理 了解动态规划一般问题 二.实验内容 编写一个简单的程序,解决0-1背包问题.设N=5,C=10,w={2,2,6,5,4},v={6,3 ...

  8. 南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

    <南京邮电大学算法设计实验报告--动态规划法>由会员分享,可在线阅读,更多相关<南京邮电大学算法设计实验报告--动态规划法(12页珍藏版)>请在人人文库网上搜索. 1.实 验 ...

  9. 2019春第二次课程设计实验报告

    2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...

最新文章

  1. powerdesigner连接db2生成模型步骤
  2. 如何给数组用fill函数和memset函数给数组赋初值
  3. Datawhale编程学习之图(6)
  4. BZOJ1431 : MLand
  5. 牛客--二维数组中的查找
  6. Resnet18详细结构
  7. 平时常见的视频文件格式有哪些呢?
  8. 交换机和路由器的区别计算机网络,交换机和路由器有什么区别?路由器与交换机的区别知识...
  9. 【机器学习】简单关联分析算法-Apriori algorithm
  10. 分布式GNN系统环境配置
  11. 替身机器人,看我用脑电波控制你
  12. Android Q版本读取SDcard
  13. Java 添加和删除Word文档水印
  14. 低版本android无法连接iPhone手机个人热点问题
  15. 编写一个判别素数(质数)的函数 int isPrime(int x)。在 main 函数中,输入一个正整数 n,输出 1~n 之间的所有素数以及素数的个数
  16. css3实现磨砂效果,CSS3打造磨砂玻璃背景效果
  17. 爬取淘宝商品名称及价格
  18. 苹果驱动安装不了,一定要进来看
  19. 未来智能互联汽车长啥样
  20. Ubuntu中安装中文语言包

热门文章

  1. netbeans项目缺少服务器,Netbeans,添加Glassfish服务器“不存在”
  2. java外部类调用内部类_java中的外部类和内部类 | 学步园
  3. python连接oracle进行监控_使用Python脚本zabbix自定义key监控oracle连接状态
  4. Java自动拆装箱面试_跟王老师学泛型(二):Java自动装箱与拆箱
  5. sql语言和php,SQL语言快速入门(三)_php
  6. axure中的拐弯箭头_Axure 8.0制作水平方向上一直来回移动的箭头
  7. matlab矩阵转入tecplot,利用Tecplot导入MATLAB计算结果数据进行三维可视化
  8. Linux显示5 9行的数据,Linux复习
  9. 比亚迪汉鸿蒙系统测评_余承东携鸿蒙OS亲自站台,比亚迪汉凭借刀片电池能否对抗Model 3?...
  10. 六十七、二分查找算法及其四个变形问题