首页 > 编程语言 >打卡 c语言趣味编程 二分查找算法实现

打卡 c语言趣味编程 二分查找算法实现

时间:2023-05-15 18:13:19浏览次数:41  
标签:二分 arr target int 编程 查找 low 打卡

N个有序整数数列已放在一维数组中,利用二分查找法查找整数在数组中的位置。 若找到,则输出其下标值;反之,则输出“Not be found!”。

思路:

  二分查找法(也叫折半查找)其本质是分治算法的一种。所谓分治算法是指的分而治
之,即将较大规模的问题分解成几个较小规模的问题,这些子问题互相独立且与原问题相
同,通过对较小规模问题的求解达到对整个问题的求解。我们把将问题分解成两个较小问
题求解的分治方法称为二分法。需要注意的是,二分查找法只适用于有序序列。
  二分查找的基本思想是:每次查找前先确定数组中待查的范围,假设指针low和
high(low<high)分别指示待查范围的下界和上界,指针mid指示区间的中间位置,即mid=
(low+high)/2,把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元
素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围放
在中间位置之前的元素中。直到low>high,查找结束。

流程图:

 

代码实现:

 

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 // 二分查找函数
 7 int binarySearch(const vector<int>& arr, int target) {
 8     int left = 0;
 9     int right = arr.size() - 1;
10 
11     while (left <= right) {
12         int mid = left + (right - left) / 2;
13 
14         if (arr[mid] == target) {
15             return mid; // 找到目标元素,返回下标值
16         } else if (arr[mid] < target) {
17             left = mid + 1; // 目标元素在右半部分
18         } else {
19             right = mid - 1; // 目标元素在左半部分
20         }
21     }
22 
23     return -1; // 没有找到目标元素
24 }
25 
26 int main() {
27     vector<int> arr = {1, 3, 5, 7, 9, 11, 13, 15}; // 有序数组
28     int target = 7; // 要查找的目标元素
29 
30     int index = binarySearch(arr, target);
31 
32     if (index != -1) {
33         cout << "Element found at index: " << index << endl;
34     } else {
35         cout << "Not be found!" << endl;
36     }
37 
38     return 0;
39 }

 

标签:二分,arr,target,int,编程,查找,low,打卡
From: https://www.cnblogs.com/qmz-znv2/p/17402717.html

相关文章

  • 深度神经网络(DNN)做多特征输入单输出的二分类及多分类模型
    深度神经网络(DNN)做多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab。程序可出分类效果图,迭代优化图,混淆矩阵图具体效果如下所示。。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人......
  • 算数优化算法AOA优化LSTM做多特征输入单输出的二分类及多分类模型。
    算数优化算法AOA优化LSTM做多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab。程序可出分类效果图,迭代优化图,混淆矩阵图具体效果如下所示。。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果......
  • 基于DBN的二分类和多分类的分类预测模型。 程序语言为matlab。
    基于DBN的二分类和多分类的分类预测模型。程序语言为matlab。直接替换excel数据就可以使用。。ID:8735682410333583......
  • 利用贝叶斯Bayes做多特征输入单输出的二分类及多分类模型。 程序内注释
    利用贝叶斯Bayes做多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab。程序可出分类效果图,优化过程图,混淆矩阵图具体效果如下所示。。ID:4930682565710541......
  • 利用卷机神经网络CNN做多特征输入单输出的二分类及多
    利用卷机神经网络CNN做多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab。程序可出分类效果图,迭代优化图,混淆矩阵图具体效果如下所示。ID:1630681635073993......
  • 算数优化算法AOA优化随机森林做二分类和多分类预测建模
    算数优化算法AOA优化随机森林做二分类和多分类预测建模。程序内注释详细直接替换数据就可以使用。程序语言为matlab。程序直接运行可以出分类预测图,迭代优化图,特征重要性排序图,混淆矩阵图。。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体分类效......
  • [科技] 用倍增替代二分
    一、用倍增替代二分从高位到低位枚举\(2^{k},2^{k-1},\dots,1\),\(k\)自己定,如果能对答案产生贡献并且依然check()=true,就加上贡献。其实很类似于倍增LCA,只不过某时候用这种方法感觉常数会小一些。二、实际应用给定一个数列\(a_{1},a_{2},\dots,a_{n}\),给定\(......
  • 偏最小二乘算法PLS建立分类模型,二分类,多分类都可以使用,代码内有详细注释,直接替换数据
    偏最小二乘算法PLS建立分类模型,二分类,多分类都可以使用,代码内有详细注释,直接替换数据就可以使用,不会替换数据的可以给指导如何替换数据,带售后,。ID:9835674471110010......
  • 关键词:储能容量优化 储能配置 微网 编程语言:matlab
    关键词:储能容量优化储能配置微网编程语言:matlab主题:基于混合整数规划方法的微网电池储能容量优化配置主要内容:本代码目的为实现微电网内电池容量的优化配置,目标函数为配置过程中整体的运行成本最小或者经济效益最大化,约束条件则包括相应的运行约束以及能量平衡约束等等,最后将......
  • 前端开发之函数式编程实践
    作者:京东科技 牛志伟函数式编程简介常见应用场景1、ES6中的map、filter、reduce等函数[1,2,3,4,5].map(x=>x*2).filter(x=>x>5).reduce((p,n)=>p+n);2、React类组件->函数式组件+hooks、Vue3中的组合式API3、RxJS、Lodash和Ramda等JS库4、中间件/插件,如Red......