改写二分搜索算法C++
改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
//二分查找
#include <bits/stdc++.h>
using namespace std;int search(vector <int> a,int n,int m){int i = 0;int j = 0;int detection = -1; //标志位int middle =0; //中间值的下标int top = n-1; //数组的右边界int low = 0; //数组的左边界while (low <= top){middle = (low + top)/2; //先计算该数组中间值下标if (a[middle] == m) //如果中间值等于要搜索的元素,则将标志位标记为中间值下标 detection=middle;if (a[middle] < m) //如果中间值小于要搜索的元素,即要查询元素在中间值右边,则将要查询数据左边界改成中间值之后一个的数据 {low=middle+1;}else //如果中间值大于要搜索的元素,即要查询元素在中间值左边,则将要查询数据左边界改成中间值之前一个的数据{top=middle-1;} }if (detection == -1) //如果m没有在其中,则执行完,top为底,low为顶,m在中间。{i = top;j = low;}else {i = detection;j = i;}if(i==j) cout<<"数字的位置在:"<<i;else {cout<<"数字不在此数组中"<<endl;cout<<"i="<<i<<endl<<"j="<<j<<endl;}return 0;
}//二分搜索mint main(){vector <int> a;int number;cout<<"输入一个由小到大排序的数组:"<<endl;while (1){cin>>number;a.push_back(number); //每输入一个数字将其添加到数组的最后 if(cin.get() == '\n') //输入回车 跳出循环break;}int n = a.size();int m;//sort(a.begin(),a.end(),greater<int>()); //由大到小排序//sort(a.begin(),a.end()); //默认由小到大cout<<"输入要查找的数字:"<<endl;cin>>m;search(a,n,m);return 0;
}
改写二分搜索算法C++相关推荐
- 7-2 改写二分搜索算法 (20 分)
题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...
- PTA:改写二分搜索算法
改写二分搜索算法 题目: 代码如下: #include<iostream> using namespace std; int binarySearch(int arr[], int x, ...
- Python改写二分搜索算法
题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...
- 算法设计与计算(改写二分搜索算法)(教材2-3)
二分搜索 设a[0:n-1]是一个已排好序的数组.请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j public static int binar ...
- [转载] python改写二分搜索算法_二分搜索算法模板python实现
参考链接: Python中的二分搜索binary search 二分搜索的算法理解起来比较简单 但是边界条件容易出错,比如 循环结束条件中 left 和 right 的关系,更新 left 和 rig ...
- Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查
1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...
- C++——《算法分析与设计》实验报告——二分搜索算法
实验名称: 二分搜索算法 实验地点: 实验目的: 理解分治算法的概念和基本要素: 理解递归的概念: 掌握设计有效算法的分治策略: 通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为 ...
- C++——《算法分析》实验壹——二分搜索算法
实验目的: 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为折半查找法,它充分利用 ...
- this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法
成功与失败 今天来学习一下二分搜索算法.二分搜索算法针对有序数组,如果数组乱序,则无法使用二分搜索法. 先来看一下二分搜索算法的运行原理: 判断区间是否有效,无效区间则退出循环. 取待查找区间的中间位 ...
最新文章
- Nginx-02:Nginx基本概念
- 用c语言编写5颗骰子任意投掷总数为15 的概率,概率统计习题1period;2答案
- myid文件到底是否需要自己手动配置
- [渗透测试]扫目录,Sqlmap利用均超时,利用dirb扫描
- deploy owned private docker registry based on docker HUB registry image
- MySQL密码忘记,怎么办?
- 《大数据导论》一1.4 案例学习背景
- java 线程池的使用_Java 使用线程池执行若干任务
- 前景检测算法(二)--codebook和平均背景法
- vue使用下载插件来完成下载文件
- 计算机无法安装操作系统的原因,关于电脑无法安装IE浏览器的原因有哪些
- 几组数据的相关性python_几的定义
- 20170627总结
- 关于王小云破解MD5之我见
- matlab计算惯性矩,梁单元有限元计算程序(matlab)
- 细说group by 和having 以及count函数的 联合使用
- 近期微信登录10005报错,解决办法
- 计划任务(啊啊啊啊啊)
- python获取经纬度_python之经纬度的获取
- C语言—判断整数的奇偶
热门文章
- IDEA修改中文字体为微软雅黑
- 华为鸿蒙微波炉,再见EMUI,你好鸿蒙!华为不止做手机
- 点名器——随机数的应用
- IE安全系列:IE浏览器的技术变迁(上)
- 萨班斯-奥克斯利法案 (SOX) 特权账号管理
- 当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务
- nape.geom.MarchingSquares
- 计算并输出0-1000含有7或者是7的倍数的整数之和及其个数
- linux eclipse glib.h,eclipse Glib
- 2019年深度学习自然语言处理最新十大发展趋势