c语言代码练习19

需求:利用二分查找,查找数组中是否有用户输入的数字。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//这里的arr[]实际上是一个指针
int ayue(int arr[],int a,int p)
{
    int left = 0;
    int right = p - 1;
    while (left<=right)
    {
        int i = (right+left) / 2;//中间元素的下标
        if(arr[i] > a)
        {
            right = i-1;
        }
        else if(arr[i] < a)
        {
            left = i+1;
        }
        else
        {
            return i;
        }
    }
    return -1;
}

int main()
{
    int ret = 0;
    int a = 0;
    int arr[] = {1,2,3,4,5,6,7,8,9};
    int p = sizeof(arr) / sizeof(arr[0]);
    printf("请输入你的数字:");
    scanf("%d", &a);
    //实际上这里传过去的arr是数组首元素的地址。
    ret = ayue(arr, a, p);
    if (ret == -1)
    {
        printf("你输入的数字不在数组里。\n");
    }
    else
    {
        printf("你输入的数字在数组里,下标是%d\n",ret);
    }
    return 0;
}

 

posted @ 2023-10-05 16:10  小菜阿跃  阅读(13)  评论(0)    收藏  举报