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;
}

 

posted @ 2023-04-15 21:26  混沌武士丞  阅读(25)  评论(0)    收藏  举报