当前位置: 首页 > news >正文

C++ 数组、递归两种方式实现二分查找

1、数组实现二分查找:

int left = 0,right = n - 1; 
int find = n;//find标记找到的位置,初始化为n,表示没找到
while(left <= right){int mid = (left + right) / 2;if(a[mid] == x){//找到了,就标记位置,并退出循环find = mid;break;}if(x < a[mid]) right = mid - 1;//x只能在左半部分if(a[mid] < x) left = mid + 1; //x只能在右半部分
}
if(find != n) printf("%d\n",find);
else printf("not find\n");

2、递归实现二分查找:

#include<iostream>
using namespace std;
int win,g[101];int binsearch(int left,int right){if(left <= right){int mid = (left + right) / 2;if(g[mid] == win) return mid;//找到if(win < g[mid]) return binsearch(left,mid - 1);//在左半部分if(win > g[mid]) return binsearch(mid + 1,right);//在右半部分}else return 0;//没找到	
}int main(){int n,i,f,left,right,mid;scanf("%d",&n);for(i = 1; i <= n; i++) scanf("%d",&g[i]);cin >> win;f = binsearch(1,n);cout << f <<endl;return 0;
} 


http://www.mrgr.cn/news/53588.html

相关文章:

  • 安卓窗口wms/input小知识NO_INPUT_CHANNEL剖析
  • Python无监督学习中的聚类:K均值与层次聚类实现详解
  • 【厦门大学附属第一医院(互联网医院)-注册安全分析报告-无验证方式导致安全隐患】
  • 大模型量化感知训练 LLM-QAT
  • 深度学习框架-Keras的常用内置数据集总结
  • 妇女、商业与法律(WBL)(1971-2023年)
  • 理解ADC:信噪比SNR的天花板是什么?附带介绍一下ENOB
  • C++——定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法。参加运算的两个操作数可以都是类对象,也可以一个是整数,其顺序任意。
  • 反欺诈与数字信任:保障数字经济安全的关键
  • 衡石分析平台系统分析人员手册-应用空间
  • 【微知】RDMA IB verbs中的ABI是什么?作用是什么?(application binary interface、规范、兼容)
  • PCDN 技术如何优化网络延迟(壹)
  • 机械视觉光源选型
  • 解决mac ssh端终端只有黑白颜色的问题
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-17
  • C++——有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。(如c=a+b)
  • 动销方案在合作伙伴场地执行,好处多多!
  • S7-1500 通过PN/PN Coupler 通信
  • Python | Leetcode Python题解之第493题翻转对
  • UniHttp 框架,请求http接口