[C语言]二分查找

        进行二分查找的前提是在一个有序排列的数组中查找指定元素。

        例如,对一个升序排列的整型数组进行二分查找:

// 二分查找
// 参数1:arr--需要传入一个有序的、按升序排列(从小到大)的整型数组
// 参数2:len--数组的长度(数组的元素个数)
// 参数3:target--要查找的元素

// 返回值:返回找到的元素在数组中的下标(索引index),如果没有找到,则返回-1
int binary_search(int *arr, int len, int target)
{
    int left = 0; // 起始索引
    int right = len - 1; // 结束索引
    while (left <= right) // 如果起始索引和结束索引没有重合,继续查找
    {
        int mid = (left + right) / 2; // 中间索引,这么写能够防止整型溢出
        // 也可以写成 int mid = left + (right - left) / 2; 
        // 这两条代码是一样的

        if (arr[mid] == target)
        {
            // 如果找到了元素,返回索引
            return mid;
        }
        else if (arr[mid] < target)
        {
            // 如果当前的中间值小于要查找的目标元素,说明目标可能在右侧,
            // 需要调整左边界(起始索引)
            left = mid + 1;
        }
        else
        {
            // 如果当前的中间值大于要查找的目标元素,说明目标可能在左侧,
            // 需要调整右边界(结束索引)
            right = mid - 1;
        }
    }

    // 如果起始索引和结束索引重合了都没有找到目标元素,说明这个元素不在当前数组中,
    // 返回-1
    return -1;
}

相关推荐

  1. C语言-二分查找

    2024-04-09 11:52:01       24 阅读
  2. [C语言]二分查找

    2024-04-09 11:52:01       17 阅读
  3. C语言----数组----二分查找

    2024-04-09 11:52:01       11 阅读
  4. 王道c语言-顺序查找二分查找

    2024-04-09 11:52:01       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 11:52:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 11:52:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 11:52:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 11:52:01       18 阅读

热门阅读

  1. restic备份

    2024-04-09 11:52:01       14 阅读
  2. [23年蓝桥杯] 买二赠一

    2024-04-09 11:52:01       12 阅读
  3. git使用

    git使用

    2024-04-09 11:52:01      12 阅读
  4. git 的使用,及其基本指令。

    2024-04-09 11:52:01       11 阅读
  5. go interface{} 作为函数参数

    2024-04-09 11:52:01       12 阅读
  6. 1006 换个格式输出整数

    2024-04-09 11:52:01       13 阅读
  7. Flutter 使用flutter_swiper_null_safety 实现轮播图

    2024-04-09 11:52:01       12 阅读
  8. css不知道宽度,如何绘制一个正方形

    2024-04-09 11:52:01       14 阅读
  9. Getshell sql注入

    2024-04-09 11:52:01       12 阅读