C语言学习记录——鹏哥二分法查找数组中元素 复习整理

#include 
#include 
int main()
{
    //初始化一维整型数组

    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

    //随机设定一个要寻找的数

    int aim = 9;

    //用整个数组的占用空间大小 / 数组中一个元素的占用空间大小
    //得到数组中的元素个数sz,定义两个变量存储初始左下标和右下标

    int sz = sizeof(arr) / sizeof(arr[0]);
    int left = 0;
    int right = sz - 1 ;
   
    //开始采用二分法在数组中查找目标数aim

    while (left <= right)
    { 
        //定义变量subscript,使得从最中间的位置开始查找
        //如不满足条件,则排除了一半的非目标元素
        //继续取剩余疑似目标的最中间值来对比寻找
        //直到左下标与右下标重合或交错,结束循环

        int subscript = (left + right) / 2;
        if (arr[subscript] < aim)
        {
            left = subscript + 1;
        }
        else if (arr[subscript] > aim)
        {
            right = subscript - 1;
        }
        else
        {
            printf("找到了,下标是:%d\n", subscript);
            break;
            //找到元素之后跳出循环
        }
       
    }

    //左下标大于右下标,说明数组中没有目标元素
    if (left > right)
        printf("找不到\n");

    return 0;
}

 

 

C语言学习记录——鹏哥二分法查找数组中元素 复习整理_第1张图片

你可能感兴趣的:(c语言,学习,算法)