线性表的查找技术:二分查找

声明:图片及内容基于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; 
    }
}

 

posted @ 2021-04-11 13:50  gonghr  阅读(187)  评论(0编辑  收藏  举报