您的位置:首页 > 编程语言 > C语言/C++

C语言习题 折半查找

2015-12-27 16:56 411 查看

Description

有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。

Input

第一行数组元素的个数n第二行n个数组元素的值第三行要查找的值

Output

查找的值在数组中的位置

Sample Input

10
10 9 8 7 6 5 4 3 2 1
5

Sample Output

6

HINT

主函数已给定如下,提交时不需要包含下述主函数int main(){inta[20],n=0,value;int position;scanf("%d",&n);input(a,n);scanf("%d",&value);position=binsearch(a,n,value);printf("%d",position);return 0;}int main(){inta[20],n=0,value;int position;cin>>n;input(a,n);cin>>value;position=binsearch(a,n,value);cout<<position;return 0;}#include<stdio.h>
int
binsearch(
int
*a,
int
n,
int
value);
void
input(
int
*a,
int
n);  //声明函数
void
input(
int
*a,
int
n) //输入函数 用于循环输入数组
{
int
i;
for
(i=1;i<=n;i++)
{
scanf
(
"%d"
,&a[i]);
}
}
int
binsearch(
int
*a,
int
n,
int
value) //查找函数 (未使用折半查找)
{
int
i,m=0;
for
(i=1;i<=n;i++)//循环查找是否含有要查找的值 
if
(a[i]==value) m=i;
return
m; //返回在数组中的位置若没有则返回初始的0
}
int
main() //主函数 (题目已给出)
{
int
a[20],n=0,value;
int
position;
scanf
(
"%d"
,&n);
input(a,n);
scanf
(
"%d"
,&value);
position=binsearch(a,n,value);
printf
(
"%d"
,position);
return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: