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 @   小菜阿跃  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示