二分查找算法实现

本文介绍了一种使用C++实现的二分查找算法。通过用户输入数组大小及元素,对数组进行排序后,实现了对指定数值的有效查找并返回其位置。文章提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include<algorithm>
using namespace std;
#define N 20
int  binary_chop(int a[],int n,int j,int k){//二分查找算法
 int low,high,mid;
 low=1;high=n;
 while(low<=high){
  mid=(low+high)/2;         
  if(a[mid]==k) {j=mid;break;}  //找到即返回下标
  else if(a[mid]>k)high=mid-1;  //寻找的值小于中间值,则在左边一般查找
  else low=mid+1;               //寻找的值大于中间值,则在右边一半查找
 }
  return j;                        //返回k的下标值,找不到返回0
}
int main(int argc, char** argv) {
 
 int a[N];
 int n; cin>>n;//定义问题的规模大小,并由用户输入问题规模大小,即数组长度;
 int W;cin>>W;//输入要寻找的数
  for(int i=1;i<=n;i++){
   cin>>a[i];
  }//输入数组元素;
 
 sort(a+1,a+n+1);  //对数组进行排序
 
// for(int i=1;i<=n;i++){           //输出排序后的数组元素,用于检测
//   cout<<a[i];
//  }//输出数组元素;
 
 cout<<binary_chop(a,n,0,W);
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值