二分查找

二分n个数找k是第几个(k有多个,输出第一个,如果不存在输出-1):

如数列:2 7 9 1 3 5 6 2 3

二分要保证

  • 有序(若无序先排序),满足单调性
  • 数列单调不降

Sort后:1 2 2 3 3 5 6 7 9

#include<iostream>
using namespace std;
int main(){
	int a[10]={0,1,2,2,3,3,5,6,7,9};
	int l=1,r=9,mid,ans,k=8;
		while(l<=r){
			mid=(r+l)/2;
			if(k<=a[mid]) r=mid-1,ans=mid;
	      else l=mid+1;
		}
		if(a[ans]==k) cout<<ans;//注意判断
		else cout<<"404 No Found!"<<endl;
	return 0;
}
posted @   To_Carpe_Diem  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示