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;}
相关文章推荐
- C语言实验——数组逆序
- C语言习题5.26--文件操作3
- C语言习题5.25--文件操作2
- C语言习题5.24--文件操作1
- C语言习题5.23--利用参数宏进行角…
- C语言习题5.17--求地球表面任意两…
- C语言习题5.16--求两数的商
- C语言习题5.14--for循环画三角形
- C语言习题5.11--判断三角形
- C语言习题5.10--日期妙算星座
- C语言习题5.20--算法:汉诺塔
- C语言习题&nbsp;整数转换成字符串
- C语言习题&nbsp;求n阶勒让德多项式
- C语言习题&nbsp;用递归方法求&nbsp;f(n)
- C语言习题5.18--进制转换
- C语言习题5.21--学生成绩的处理
- C语言习题5.13--趣味取小数
- C语言习题5.19--递归方法实现逆序
- C语言习题&nbsp;牛顿迭代法求根
- C语言习题&nbsp;求sinh(x)