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

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.kler.cn/news/355621.html

相关文章:

  • YOLOv8/YOLOv11使用web界面推理自己的模型,Gradio框架快速搭建
  • C++ 递归函数之分解质因子
  • Neuromnia是一家创新的AI平台用Llama为自闭症护理领域带来全新解决方案
  • 机器学习—基于随机森林的贷款可能性预测系统实现
  • 将 Ubuntu 系统中的 **swap** 空间从 2GB 扩展到 16GB
  • linux搭建elasticsearch
  • 分布式环境下验证码登录的技术实现
  • 2021-04-14 proteus中仿真时74HC245三态双向端口扩展输出
  • Java集合(3:Set和Map)
  • 拯救大兵瑞恩——状态压缩 + 复合BFS + 动态规划 + 坐标压缩
  • VulnHub-DC-1靶机
  • docker 资源限制+调优详解
  • Golang 并发编程:通道(Channel)的详细用法
  • Java | Leetcode Java题解之第493题翻转对
  • Midjourney中文版:开启AI绘画新时代
  • 基于SSM出租车管理系统的设计
  • nodejs 实现linux 磁盘挂载 磁盘健康检测(smartmontools) 系统内存cpu性能监控
  • windows C++-有效使用PPL(三)
  • 力扣 简单 141.环形链表
  • Miniconda管理虚拟环境【Python环境配置】