二分查找算法
2022/3/4 9:15:04
本文主要是介绍二分查找算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二分查找算法
问题一、在一个有序的序列(不降序列)中查找指定值的算法,查找成功返回它所在的位置,否则返回-1
int binarySearch(int a[],int l,int r,int x)
{
int ans=-1;
while(l<=r)
{
int m=l+(r-l)/2;
if (a[m]==x)
{
ans=m;break;
}
if (a[m]<x)
l=m+1;
else
r=m-1;
}
return ans;
}
问题二、如果要查找指定值的最早的下标,如何实现
int binarySearch(int a[],int l,int r,int x)
{
int ans=-1;
while(l<=r)
{
int m=l+(r-l)/2;
if (a[m]==x)
{
ans=m;r=m-1;
}
if (a[m]<x)
l=m+1;
else
r=m-1;
}
return ans;
}
问题三、要查找第一个大于等于指定值的下标?
int binarySearch(int a[],int l,int r,int x)
{
int ans=-1;
while(l<=r)
{
int m=l+(r-l)/2;
if (a[m]>=x)
{
ans=m;r=m-1;
}
else
l=m+1;
}
return ans;
}
问题四、要查找第一个大于指定值的下标?
int binarySearch(int a[],int l,int r,int x)
{
int ans=-1;
while(l<=r)
{
int m=l+(r-l)/2;
if (a[m]>x)
{
ans=m;r=m-1;
}
else
l=m+1;
}
return ans;
}
这篇关于二分查找算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器