AC2656 2022-12-24 15:30 采纳率: 81.8%
浏览 32
已结题

二分查找的C语言代码怎么写?

二分查找的变形我不会,最简单的查找某个元素我的位置我是会的。

二分查找的16种代码,即(第一个 >= > <= < target 的元素,共4种)(数组元素升序、降序,共2种)(左边界、右边界,共2种)== 16种不同的代码

要求:16种代码的模板,和记忆的方法(就是什么情况代码的哪个地方该怎么写)。

注意:代码用C/C++写,并且用循环实现,不要用递归,代码类似下边这样。

int find(int x, int l, int r) // 第一个 >= x 的元素的下标 升序 左边界
{
    int mid;
    while (l <= r)
    {
        mid = (l + r) / 2;
        if (a[mid] == x)
            r = mid - 1;
        if (a[mid] > x)
            r = mid - 1;
        if (a[mid] < x)
            l = mid + 1;
    }
    return l;   
}
int find(int x, int l, int r) // 第一个 >= x 的元素的下标 降序 左边界
{
    int mid;
    while (l <= r)
    {
        mid = (l + r) / 2;
        if (a[mid] == x)
            r = mid - 1; 
        if (a[mid] > x)
            l = mid + 1;
        if (a[mid] < x)
            r = mid - 1; 
    }
    return l;   
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-12-24 18:07
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月25日
  • 修改了问题 12月24日
  • 修改了问题 12月24日
  • 修改了问题 12月24日
  • 展开全部

悬赏问题

  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错