4.27 1.9

一、问题描述

N个有序整数数列已放在一堆数组中,利用二分法查找整数m在数组中的位置。若找到,输出其值,反之,输出“Not be found!”。

二、分析N个有序数应存放在数组中,根据数组下标的取值范围知指针 low 和 high 的初值分别为0N-1。除了三个指针变量low、high、mid 之外还需要一个变量(假设为 k)来记录下标,利用变量 k 的值来判断整数 是否在所给出的数组中。下面我们用示意图来表示二分查找的过程。假设一维数组中存储的有序数列为5 13 19 21 37 56 64 75 80 88 92要查找的整数为21。

根据二分查找方法可知指针 low和 high 最初分别指向元素5和92,由 mid= (low+high)/2知指针mid 指向元素56。

 

三、代码

#include<iostream>
using namespace std;
#define N 10
int main()
{
int a[N]={-3,47,9,13,45,67,89,100,180};
int i,k=-1,m;
cout<<"a数组中的数据如下:"<<endl;
for(i=0;i<N;i++)
cout<<a[i]<<endl;
cout<<"Enter m: ";
cin>>m;
for(i=0;i<N;i++)
if(m==a[i])
{
k=i;
break;
}

if(k>=0)
cout<<"m="<<m<<" "<<"index="<<k<<endl;
else
cout<<"Not be found! "<<endl;
}

四、结果

 

posted @     阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示