有关二分查找的相关内容
1.二分查找有两种类型,一种是返回左边的值,一种是返回右边的值
二分查找原理
int binarySearch(int *a,int n,int k)
{
int low=0;
int high=n-1;
int mid;
while(low<high)
{
mid=(low+high)/2;
if(a[mid]>k) high=mid-1;
if(a[mid]<k) low=mid+1;
else return mid;
}
return 0;
}
输出左边的数
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int binarySearch(int *a,int n,int k)
{
int low=0;
int high=n-1;
int mid;
while(low<high)
{
mid=(low+high)/2;
if(a[mid]<k) low=mid+1;
else high=mid;
}
return low;
}
int main()
{
int a[]={1,2,3,4,5,6,7};
cout<<binarySearch(a,7,2);
return 0;
}
输出右边的数`
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int binarySearch(int *a,int n,int k)
{
int low=0;
int high=n-1;
int mid;
while(low<high)
{
mid=(low+high)/2;
if(a[mid]>k) high=mid-1;
else low=mid;
}
return high;
}
int main()
{
int a[]={1,2,3,4,5,6,7};
cout<<binarySearch(a,7,5);
return 0;
}
https://www.cnblogs.com/yedushusheng/p/5524166.html