在一个有序数组中查找具体的某个数字

#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
int BinSearch(int x, int a[], int n)
{

    int start=0 ;
    int end = n - 1;
    while (start <= end) {
        int mid = (start + end) / 2;
        if (x > a[mid])
        {
            //右半
            start = mid + 1;
        }
        else if (x < a[mid])
        {
            //左半
            end = mid - 1;
        }
        else {
            return mid;
        }
    }
    return -1;//没有找到返回-1.

}
    int main()
    {
        int x=0;
        int a[] = { 1,2,3,4,5,6,7,8,9,10 };
        int n = sizeof(a) / sizeof(a[0]);
        printf("请输入要查找的数字:");
            scanf("%d", &x);
        int index=BinSearch(x,a,n);//传参的时候,数组下标是被忽略的。
        printf("%d\n", index);
       
        system("pause");
        return 0;
    }
//运行环境vs2019

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

在这里插入图片描述

原创文章 11 获赞 20 访问量 359

猜你喜欢

转载自blog.csdn.net/weixin_46078890/article/details/105910048