第八天打卡

1.问题:N个有序整数数列已放在一堆数组中,利用二分察州法查找整数m在数组中的位置。若找到,则输出其下标值;反之,则输出“Not be found!”。

2.思路:定义一个数组存储一个有序数列,并定义low,high,mid三个变量分别来指向数组的下标0,N-1,(low+mid)/2,并通过while循环与指定值进行判断以及未找到时对mid下标的更新。

3.程序流程图:

 

4.代码实现:

#include <iostream>
using namespace std;

int main()
{
int N,m,k=-1;
cin>>N>>m;
int a[N];
for(int i=0;i<N;i++){
cin>>a[i];
}
int low=0,high=N-1;
while(low<=high){
int mid=(low+high)/2;
if(m<a[mid]){
high=mid-1;
}
else if(m>a[mid]){
low=mid+1;
}
else{
k=mid;
break;
}
}
if(k>=0){
cout<<"Found m="<<m<<" k="<<k;
}
else{
cout<<"Not found";
}
}

posted @ 2023-04-24 01:56  £剑影メ随见彡  阅读(17)  评论(0)    收藏  举报