改写二分搜索算法,使得当搜索元素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++相关推荐

  1. 7-2 改写二分搜索算法 (20 分)

    题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...

  2. PTA:改写二分搜索算法

    改写二分搜索算法 题目: 代码如下: #include<iostream> using namespace std; int binarySearch(int arr[], int x, ...

  3. Python改写二分搜索算法

    题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...

  4. 算法设计与计算(改写二分搜索算法)(教材2-3)

    二分搜索 设a[0:n-1]是一个已排好序的数组.请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j public static int binar ...

  5. [转载] python改写二分搜索算法_二分搜索算法模板python实现

    参考链接: Python中的二分搜索binary search 二分搜索的算法理解起来比较简单 但是边界条件容易出错,比如 循环结束条件中 left 和 right 的关系,更新 left 和 rig ...

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

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

  7. C++——《算法分析与设计》实验报告——二分搜索算法

    实验名称: 二分搜索算法 实验地点: 实验目的: 理解分治算法的概念和基本要素: 理解递归的概念: 掌握设计有效算法的分治策略: 通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为 ...

  8. C++——《算法分析》实验壹——二分搜索算法

    实验目的: 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为折半查找法,它充分利用 ...

  9. this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法

    成功与失败 今天来学习一下二分搜索算法.二分搜索算法针对有序数组,如果数组乱序,则无法使用二分搜索法. 先来看一下二分搜索算法的运行原理: 判断区间是否有效,无效区间则退出循环. 取待查找区间的中间位 ...

最新文章

  1. Nginx-02:Nginx基本概念
  2. 用c语言编写5颗骰子任意投掷总数为15 的概率,概率统计习题1period;2答案
  3. myid文件到底是否需要自己手动配置
  4. [渗透测试]扫目录,Sqlmap利用均超时,利用dirb扫描
  5. deploy owned private docker registry based on docker HUB registry image
  6. MySQL密码忘记,怎么办?
  7. 《大数据导论》一1.4 案例学习背景
  8. java 线程池的使用_Java 使用线程池执行若干任务
  9. 前景检测算法(二)--codebook和平均背景法
  10. vue使用下载插件来完成下载文件
  11. 计算机无法安装操作系统的原因,关于电脑无法安装IE浏览器的原因有哪些
  12. 几组数据的相关性python_几的定义
  13. 20170627总结
  14. 关于王小云破解MD5之我见
  15. matlab计算惯性矩,梁单元有限元计算程序(matlab)
  16. 细说group by 和having 以及count函数的 联合使用
  17. 近期微信登录10005报错,解决办法
  18. 计划任务(啊啊啊啊啊)
  19. python获取经纬度_python之经纬度的获取
  20. C语言—判断整数的奇偶

热门文章

  1. IDEA修改中文字体为微软雅黑
  2. 华为鸿蒙微波炉,再见EMUI,你好鸿蒙!华为不止做手机
  3. 点名器——随机数的应用
  4. IE安全系列:IE浏览器的技术变迁(上)
  5. 萨班斯-奥克斯利法案 (SOX) 特权账号管理
  6. 当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务
  7. nape.geom.MarchingSquares
  8. 计算并输出0-1000含有7或者是7的倍数的整数之和及其个数
  9. linux eclipse glib.h,eclipse Glib
  10. 2019年深度学习自然语言处理最新十大发展趋势