C语言编程 求大神 从键盘输入一数,然后在一个整型一维数组a[20]中,用折半查找法找出该数

C语言编程 求大神
从键盘输入一数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印”No found”。

//1.cpp
#include<stdio.h>
int Pos(int *arr,int left,int right,int key)
{//在闭区间[left,right]中查找key
    int mid=(left+right)/2;
    if(key==arr[mid])return mid;
    else if(left==right)return -1;
    if(key<=arr[mid])return Pos(arr,left,mid,key);
    else return Pos(arr,mid+1,right,key);
}
int main()
{
    int arr[21];
    int i;
    int key;
    int res
    for(i=1;i<=20;i++)
    {//默认数组升序排列
        arr[i]=i*2;
        printf("%d ",arr[i]);
    }
    printf("\n");
    printf("请输入要查找的值:");
    scanf("%d",&key);
    res=Pos(arr,1,20,key);
    if(res==-1)
        printf("不存在\n");
    else printf("位置:%d\n",res);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答