m.ncgjevu 2021-09-20 11:12 采纳率: 66.7%
浏览 17
已结题

这个i>high是什么意思啊

img

img

  • 写回答

1条回答 默认 最新

  • 迩欧 2021-09-20 12:16
    关注

    代码不太全,应该是用的二分吧
    如果是二分查找了话,前面的查找过程应该是有
    if(A[mid]>x)high--:if(A[mid]<x)low++;
    这样的代码来一步步逼近表中与x最接近的值的下标
    而这个分支条件是low>high,也就是遍历了整个表之后,low所表述的下标已经大于了high,却仍然没有找到与x相等的元素的情况
    由于每一次循环都要进行一次判定是否low>high,所以此时的high应该是正好比x小的那个元素的下标,而low是正好比x大的元素的下标
    所以在把x插入时,只需把low到n的元素后移再插入就可以了,因为前后的元素本身就已经排好序了,即

    for(int i=n-1;i>=low;i--)
        A[i+1]=A[i];
    

    而前面提过,high恰好小于low恰好大于x,即此时low=high+1
    所以用i>high等同于i>=low啦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 创建了问题 9月20日

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作