4.15趣味百题第九题
一 问题描述
输入N个有序整数,利用二分法查找某个数。
二 设计思路
利用二分法不断缩短查找范围。
三 流程图

四 伪代码
定义一个数组
输入 要查找的整数
int low=0 high=N
while(low<=high)
{mid=(low+hige)/2
if(m<a[mid]){high=mid-1}
else if(m>a[mid]){low=mid+1}
else{k=mid}break}
if(k>=0)
输出k
else输出查找错误
五 c++代码
#include<iostream>
#include<math.h>
#define N 10
using namespace std;
int main(){
int k=-1,m;int low=0,high=9;int mid;
int a[N]={1,15,26,35,47,58,69,79,80,85};
for(int i=0;i<N;i++)
{
cout<<a[i]<<" ";
}
cin>>m;
while(low<=high)
{
mid=(low+high)/2;
if(m>a[mid]){low=mid+1;}
else if(m<a[mid]){high=mid-1;}
else{k=mid;break;}
}
cout<<m<<endl<<k+1;
return 0;
}
浙公网安备 33010602011771号