C 练习

//用二分法,查找一个数是否在一个有序数组中.

#include <stdio.h>
int binary_search(int arr[], int k, int size)
{
    int lift = 0;
    int right = size-1;    
    while (lift<=right)
    {
        int mid = (lift + right) / 2;
        if (arr[mid] < k)
            lift = mid+1;
        else if (arr[mid] > k)
            right = mid-1;
        else
            return    mid;
    }
    return -1;
}


int main()
{
    int arr[] = {10, 20, 30, 40,50, 60,70,80,90,100};
    int k =60;
    int size = sizeof(arr) / sizeof(arr[0]);     //数组的长度放在函数外面获取
    int ret = binary_search(arr, k, size);      //因为函数传递数组仅仅是传递的数组的首地址
    if (ret == -1)
    {
        printf("没有找到。");
    }
    else
        printf("%d 找到了。", k);

    return 0;
}

 

posted @ 2023-08-29 13:22  搬瓦匠  阅读(6)  评论(0编辑  收藏  举报