一问题描述

存在一个数组内部保存着十个数然后输入一个数利用二分法查找找到的话输出那个数的下标如果没找到输出not be found

二设计思路

二分法将数组的最大和最小的角标定义出来通过将所输入的数与数组的中间值比较进行范围的选择如此循环最后会找出与输入的数最近似的数

三程序流程图

 

四伪代码实现

#include<iostream>
using namespace std;
int main(){
int N=10,k=-1,mid,high=N-1,low=0,m;
int a[N]={-3,4,7,9,13,45,67,89,100,180};
cout<<"输入所选的值"<<endl;
cin>>m;
while(low<=high){
mid=(low+high)/2;
if(m<a[mid]){
high=mid-1;
}
if(m>a[mid]){
low=mid+1;
}
if(m==a[mid]){
k=mid;
break;
}
}
if(k>=0){
cout<<k<<endl;}
else{
cout<<"not be found"<<endl;
}
return 0;
}

五代码实现