算法第二章实践上机实验报告
- 题目:二分法查找
- 问题描述:用二分法查找x,找到时输出x的下标和比较次数;找不到时输出-1和比较次数。
- 算法语言描述:
输入数组和要查找的数x
- 算法描述:将一个数组分为两半,设置一个中间量a[mid]与要查找的数x比较,设置一个变量表示比较次数cnt,每次比较后cnt+1。若相等则说明中间值是要找的数,输出中间值和比较次数。若a[mid]小于x,则在数组右边继续查找,若a[mid]大于x,则在数组左边继续查找。找不到则输出-1和查找次数。
- 代码实现:
#include <iostream>
using namespace std;
int a[1009];
int main(){
int n;cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int x;cin>>x;
int cnt=0;
int l,r,mid;l=0,r=n-1;
while(l<=r){
mid=(l+r)/2;
cnt++;
if(a[mid]==x)break;
else if(a[mid]<x){
l=mid+1;
}
else r=mid-1;
}
if(a[mid]==x){
cout<<mid<<endl;
cout<<cnt<<endl;
}
else cout<<-1<<endl<<cnt<<endl;
return 0;
}
- 时间复杂度和空间复杂度;
用了二分法搜索算法,寻找x的时间复杂度为O(logn);空间复杂度为数组空间大小,是一个常数,与变量n的取值无关。所以空间复杂度为O(1)。
- 心得:打代码正确的思路很重要,先有思路再一步一步用代码把正确的思路实现出来就很快了。还有要注意一下代码的规范性。
转载于:https://www.cnblogs.com/Z20171003329/p/9824221.html
算法第二章实践上机实验报告相关推荐
- 工程热力学c语言 朗肯循环第二题,软件工程上机实验报告_相关文章专题_写写帮文库...
时间:2019-05-12 14:56:17 作者:admin <数据库与软件工程>上机实验答案 实验三 SQL语言的DDL 3.CREATE TABLE aa( Bb1 VARCHAR( ...
- 计算机审计实验报告第二章,计算机审计实验报告(共5篇).doc
计算机审计实验报告(共5篇) 计算机审计实验报告(共5篇) 一.实训的目的 本学期我们专业开设了计算机审计实训的课程,在这之前我们有先学习了审计这门以理论为主的专业.在有了一定的审计的基础知识后,再来 ...
- 计算机组成原理上机实验报告.doc,计算机组成原理第二次上机实验报告.doc
<计算机组成原理第二次上机实验报告.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计算机组成原理第二次上机实验报告.doc>文档请在天天文库搜索 ...
- 通信系统计算机仿真上机实验报告,昆明理工大学计算机仿真实验.docx
文档介绍: <计算机仿真>上机实验报告姓名: 学号:-专业:-测控技术与仪器 班级:_121-班 实验一常微分方程的求解及系统数学模型的转换实验目的通过实验熟悉计算机仿真中常用到的Matl ...
- 2019级计算机学院数据结构编程作业,数据结构上机实验报告
时间:2019-05-12 08:38:58 作者:admin 数据结构实验报告 课程 数据结构 _ 院 系 专业班级 实验地点姓 名 学 号 实验时间 指导老师 数据结构上机实验报告1 一﹑实验名称 ...
- 数值计算方法上机c语言编程,数值计算方法上机实验报告.doc-资源下载在线文库www.lddoc.cn...
<数值计算方法>上机实验报告.doc 华 北 电 力 大 学实 验 报 告实验名称 数值计算方法上机实验 课程名称 数值计算方法 专业班级电力实 08 学生姓名李超然学 号20080100 ...
- 20155225 实验三《敏捷开发与XP实践》实验报告
20155225 实验三<敏捷开发与XP实践>实验报告 一.使用工具(Code->Reformate Code)把代码重新格式化 IDEA里的Code菜单有很多实用的功能可以帮助我们 ...
- 20155310 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20155310 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 实验内容 1.XP基础 2.XP核心实践 3.相关工具 实验步骤 (一)敏捷开发与XP 1.敏捷开发 敏捷开发( ...
- 2018-2019-2 20175320实验三《敏捷开发与XP实践》实验报告
2018-2019-2 20175320实验三<敏捷开发与XP实践>实验报告 一.实验步骤及内容 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括 ...
最新文章
- 一张思维导图搞定你的Python所有基础
- 函数基本使用-函数的定义以及调用执行线路图
- 如何把springboot项目部署到tomcat上
- js判断数组里是否有重复元素的方法
- 使用CountDownLatch模拟高并发场景
- 让每一首心动歌曲穿越人海遇见你,背后竟藏着这么多“黑科技”|回响·TME音乐公开课...
- .NET 设计规范--.NET约定、惯用法与模式--5.成员设计
- 国联安 德盛 新基金 申购免手续费 产品好 利润高
- SQL Server 2016安装指南——针对“Microsoft R Open和Microsoft R Serve”提供解决经验
- 3dmm人脸配准/重建:gold standard algorithm
- 尚硅谷redis6文档,代码
- amd处理器更新zen4服务器芯片,AMD Zen4接口AM5曝光:改用LGA触点式、告别脆弱的针脚...
- C# Parellel.For 和 Parallel.ForEach
- 计算机的发展英语600词,计算机英语的词汇变化
- word或wps的相关API脚本js操作
- Mysql面试题整理
- 识别和避免日程安排游戏
- 和我的清华室友经过20天得出的python爬取网站数据!!!
- SpringMvc工作流程图讲解
- Cocos Creator 3D 插件教程(一):看你骨骼惊奇,我带你上车!