本题改写二分查找法为黄金分割点查找(即每次查找在left与right之间的0.618处),要求实现一个函数,采用黄金分割点法查找元素出现的位置及查询次数。
函数接口定义:
int Goldsearch (int a[],int n,int x,int &count);
其中 n
是用户传入的参数,表示数组长度。 x
的值不超过int
的范围,是需查询的元素。count
表示查询的次数,初值为0,程序调用时通过形参返回其值, 函数须返回 x
中 a
中出现的位置,-1表示未查到。
裁判测试程序样例:
#include <stdio.h>
int Goldsearch(int a[],int n,int x,int &count);
int main()
{
int a[10]={2,4,6,8,10,12,14,16,18,20},x,num=0,res;
scanf("%d",&x);
res=Goldsearch(a,10,x,num);
if(res&