有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。
要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。
查找的值在数组中的位置
10 10 9 8 7 6 5 4 3 2 1 5
6
#include<stdio.h>
#include <iostream>
using namespace std;
int i;
void input(int a[20],int n)
{
for(i=0;i<n;i++)
cin>>a[i];
}
int binsearch(int a[20],int n,int value)
{
int i,start,end;int q;
for(start=0,end=n-1;start<=end;)
{
i=start+(end-start)/2;
if(value>a[0])//输入的value不在数组中
q=0;
if (value==a[i])//value为数组中的a[i]
{
q=i+1;
break;
}
else
if (value>a[i]) //value在两段的前半部分
end=i-1;
else //value在两段的后半部分
start=i+1;
}
return q;
}
/*
int main()
{
int a[20],n=0,value;
int position;
cin>>n;
input(a,n);
cin>>value;
position =binsearch(a,n,value);
cout<<position;
return 0;
}
*/
原文:http://blog.csdn.net/u013629228/article/details/20938867