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啦本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 对于相关问题的求解与代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作