11th
二分查找
作为一个比较重要的算法
比如 对一个升序序列
1 2 3 4 5 6 7;
想要知道 某一个数 的位置 或者是下标
第一步 设立 左 中 右
int left ,mid,right;
让左中右分别指向 左边 中间 右边
left=0,right=7,mid =(left+right)/2
当 mid 这个数所指的这个数 比所想要找的数小
则就将 left 右移 指向 mid+1
mid=(left+right)/2
or
将 right 左移到mid-1
mid =(left+right)/2;
以此类推
#include <iostream>
using namespace std;
int n=7;
int main(){
//二分查找
int right,left,mid;
int a[n]={1,2,3,4,5,6,7};
int m;
cin>>m;
int k;
left=0,right=n-1;
while(left<=right){
mid=(left+right)/2;
if(a[mid]<m){
left=mid+1;
continue;
}
else if (a[mid]>m){
right=mid-1;
continue;
}
else{k=mid;
break;
}
}
if(k>=0)
cout<<k;
else
cout<<"no found";
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义