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

计算机算法分析与设计(23)---二分搜索算法(C++)

文章目录

  • 1. 算法介绍
  • 2. 代码编写


1. 算法介绍

 1. 二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是用来在一个 有序数组 中查找某一元素的算法。

 2. 二分搜索算法基本思想是:将 n n n 个元素分成个数大致相同的两半,去 a [ n / 2 ] a[n/2] a[n/2] x x x 作比较。如果 x = a [ n / 2 ] x=a[n/2] x=a[n/2],则找到 x x x,算法终止;如果 x < a [ n / 2 ] x<a[n/2] x<a[n/2],则在数组 a a a 的左半部分继续搜索 x x x;如果 x > a [ n / 2 ] x>a[n/2] x>a[n/2],则在数组 a a a 的右半部分继续搜索 x x x

 3. 与普通查找比较验示:

在这里插入图片描述

 4. 数组长度为奇数和偶数的情况:

在这里插入图片描述

在这里插入图片描述

2. 代码编写

#include<iostream>
#include<algorithm>
using namespace std;
int n, x, a[105];
int bs(int left, int right, int x){int mid = (left + right) / 2;if (x < a[mid]){return bs(left, mid - 1, x);}else if (x > a[mid]){return bs(mid + 1, right, x);}else{return mid;}
}
int main(){cout<<"请输入元素个数:"<<endl;cin >> n ;cout<<"请输入数组元素:"<<endl;for (int i = 0; i < n; i++) {cin >> a[i];}cout<<"请输入查找元素:"<<endl;cin >> x;sort(a,a+n);  //升序排列 cout<<"该查找元素在排序后数组中的角标为:"<<endl;cout << bs(0, n-1, x);return 0;
}

在这里插入图片描述

http://www.lryc.cn/news/234688.html

相关文章:

  • 前置语音群呼与语音机器人群呼哪个更好
  • 『Element Plus の 百科大全』
  • P3879 [TJOI2010] 阅读理解- 字典树
  • upgrade k8s (by quqi99)
  • CronExpression
  • 释放机器人潜力,INDEMIND深耕底层技术
  • 【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!
  • 流量2----2
  • 人工智能发展前景
  • 编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。
  • AcWing 4520:质数 ← BFS
  • 00、计算机视觉入门与调优简介
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • 多媒体ffmpeg学习教程
  • SELinux零知识学习十五、SELinux策略语言之客体类别和许可(9)
  • OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76
  • Linux | 进程间通信
  • Vue.js正式环境中配置多个请求的URL
  • 简单的 UDP 网络程序
  • 人工智能-深度学习之文本预处理
  • 【Java 进阶篇】插上翅膀:JQuery 插件机制详解
  • 手动编译GDB
  • 竞赛选题 深度学习花卉识别 - python 机器视觉 opencv
  • 替换SlowFast中Detectron2为Yolov8
  • 轻量化网络--MobileNet V1
  • gittee启动器
  • Spark数据倾斜_产生原因及定位处理办法_生产环境
  • 2023OceanBase年度发布会后,有感
  • ubuntu18.04中代码迁移到20.04报错
  • QQ五毛项目记