首页 > 编程语言 >用c++ 实现 二分查找 前提是先把数组排列好

用c++ 实现 二分查找 前提是先把数组排列好

时间:2023-09-14 10:24:32浏览次数:40  
标签:二分 arr end target int mid c++ start 查找

#include<iostream>
using namespace std;

// 可以递归调用的二分查找
int search(const int(&a)[10], int start, int end, int target)
{
// 基准情况:目标值超出范围,或者start > end,说明没有找到
if (target < a[start] || target > a[end] || start > end)
return -1;

// 取二分的中间坐标
int mid = (start + end) / 2;
// 比较中间值和目标值的大小
if (a[mid] == target)
return mid; // 找到了
else if (a[mid] > target)
return search(a, start, mid - 1, target); // 比目标值大,在更小的部分找
else
return search(a, mid + 1, end, target); // 比目标值小,在更大的部分找
}

int main()
{
int arr[10] = { 1,2,3,4,5,6,9,12,25,38 };

int key = 22;
int size = sizeof(arr) / sizeof(arr[0]);
int result = search(arr, 0, size - 1, key);

result == -1
? cout << "在数组中没有找到" << key << "!" << endl
: cout << "在数组中找到" << key << ",索引下标为:" << result << endl;

cin.get();
}

标签:二分,arr,end,target,int,mid,c++,start,查找
From: https://www.cnblogs.com/huangzuhong/p/17701787.html

相关文章

  • c++ 32位异常还原
    本文中的例子下载地址https://wwmf.lanzout.com/ij4zq18au9yd密码:2vts确定try的位置首先确定try的位置上面明显是一个SEH结构,在c++异常中,state固定在var_4的位置上,这里state初始化位-1,我们将var_4改名为state上图为ida的反编译图,当state赋值为0时,为try的开始,state赋值为......
  • c/c++ 混合编译makefile
    CC=gccC++=g++LINK=g++INCLUDES=-L.-IsconvLIBS=-lz-lmCCFLAGS=$(COMPILER_FLAGS)--std=c99-c-g-MMD-MP$(DEFINES)C++FLAGS=$(COMPILER_FLAGS)-std=c++11-c-g-O2-W-WallTARGET=222CFILES=sconv/sconv.cC++FILES=2.cppOBJ......
  • Java实现常见查找算法
    Java实现常见查找算法查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。线性查找线性查找(LinearSearch)是一种简单的查找算法,用于在数据集中逐一比较每个元素,直到找到目标元素或搜索完整个数据集。它适用于任何类型......
  • 复习c++
    一些偏门的点endl可以用\n代替cout<<"Helloworld"<<"\n"intmain()括号里加void才能表示不可传参//这样是正确的intmain(){if(0)main(42);}//这样会出错intmain(void){if(0)main(42);}默认编译产生的文件名就是cpp的名且不带后面的参数。如果......
  • C++算法进阶系列之倍增算法解决求幂运算
    1.引言学习倍增算法,先了解什么是倍增以及倍增算法的优势。如果面前有一堆石子,要求计算出石子的总数量。这是一个简单的数数问题,可以:一颗石子一颗石子的数。两颗石子两颗石子的数。三颗石子三颗石子的数。或者更多颗石子更多颗石子的数……在石子很多的情况下,每一次选择更......
  • C++11之智能指针(万字长文详解)
    C++11之智能指针为什么需要智能指针#include<iostream>usingnamespacestd;intdiv(){inta,b;cin>>a>>b;if(b==0)throwinvalid_argument("除0错误");returna/b;}voidFunc(){//1、如果p1这......
  • Glang 数组的排序和查找:快速丶希尔丶堆丶选择丶冒泡...
    一.数组的排序与查找1//数组的排序和查找2functestArrSort(){3//内部排序:将需要处理的所有数据都加载到内部存储器中进行排序(交换式排序法、选择式排序法、插入式排序)45//交换式排序法-冒泡排序:递归将最大或最小值冒泡到数组尾6Bu......
  • Linux之查找过滤(tail、grep、find)
    参考:https://www.cnblogs.com/caoweixiong/p/15218826.htmltail基本格式tail[-f][-cNumber|-nNumber|-mNumber|-bNumber|-kNumber][File]参数解释-f该参数用于监视File文件增长。-cNumber从Number字节位置读取指定文件-nNumber从Number行......
  • C++系列三:Qt-for-Python
    目录代码参考:代码参考:官方文档、博客参考代码参考:self.ui.pushButton.setText("demo")lable=QLabel("<fontcolor=redsize=40>HelloWorld!</font>")lable.show()SignalsandSlots:fromPySide6.QtCoreimportSlot@Slot()defsay_hello():......
  • C++系列三:QT-事件处理
    目录介绍:介绍:GUI应用程序是由事件(event)驱动的,点击鼠标,按下按键,窗口大小改变等等按事件的来源,可以将事件划分为3类:自生事件(spontaneousevent):由窗口系统产生,如:QKeyEvent、QMouseEvent。自生事件会进入系统队列,等待事件循环的处理。发布事件(postedevent):是由Qt应用程序产生,如:Q......