线性表的查找技术:二分查找
声明:图片及内容基于https://www.bilibili.com/video/av81382764
原理:
核心代码
#include<iostream>
#include<algorithm>
using namespace std;
void binarySearch(int a[],int target,int length);
int main(){
int a[10];
cout<<"请输入数组10个元素"<<endl;
for(int i=0; i <10;i++){
cin>>a[i];
}
int target;
int length=sizeof(a)/sizeof(a[0]);
cout<<"请输入查找的元素"<<endl;
cin>>target;
binarySearch(a,target,length);
return 0;
}
void binarySearch(int a[],int target,int length){
int begin=0;
int end=length-1;
int mid;
sort(a,a+length);
while(begin<=end){
mid=(begin+end)/2;
if(a[mid]==target)
break;
if(a[mid]<target)
begin=mid+1;
if(a[mid]>target)
end=mid-1;
}
if(begin>end){
cout<<"没找到"<<endl;
}
else{
cout<<"找到了,"<<target<<"是下标为"<<mid<<"的元素"<<endl;
}
}