习题6.9 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”

#include <stdio.h>
int main()
{
    int a[15]={29,27,25,23,21,19,17,15,13,11,9,7,5,3,1};
    int i,n,low,high,mid;

    printf("数组a数据依次为:\n");
    for(i=0;i<15;i++)
        printf("%d ",a[i]);
    printf("\n\n请选择数组中任意一个值,并输出:");
    scanf("%d",&n);

    for(i=0;i<15;i++)
    {
        if(n==a[i]) break;
        else
        {
            if(i>=14) printf("\n\n无此数\n");
        }
    }

    low=0;
    high=14;

    while(low<=high)
    {
        mid=(low+high)/2;
        if(n>a[mid])
            high=mid-1;
        else if(n<a[mid])
            low=mid+1;
        else if(n==a[mid])
        {
            printf("\n\n%d在数组中第%d位\n",n,mid+1);
            break;
        }
    }

    return 0;
}

在这里插入图片描述
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页