有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