扫地机器人的这个代码,橙色括号那部分特别是划线部分每行代码是什么意思,有什么作用?二分法中left和right是否要加1或减1,是否要相加,是否要乘除2怎么看,怎么判断
扫地机器人二分法不理解不懂
扫地机器人的这个代码,橙色括号那部分特别是划线部分每行代码是什么意思,有什么作用?二分法中left和right是否要加1或减1,是否要相加,是否要乘除2怎么看,怎么判断
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-03-04 21:46关注
2401_83164243 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5在扫地机器人的代码中,橙色括号内的部分是使用二分法来搜索目标的位置。
下面是橙色括号内每行代码的解释:
- left = 0:将left变量初始化为0,表示目标的最左边界。
- right = len(array) - 1:将right变量初始化为array的长度减1,表示目标的最右边界。
- while left <= right::使用while循环来执行二分法的搜索。当left小于等于right时,还有搜索的空间。
- mid = (left + right) // 2:计算出目标的中点位置。将left和right相加再整除2,可以得到中点位置。
- if array[mid] == target::如果中点的值等于目标值,则找到了目标。
- elif array[mid] < target::如果中点的值小于目标值,则目标在中点的右侧。
- \tleft = mid + 1:将left更新为中点的右侧位置,表示缩小搜索范围。
- else::如果中点的值大于目标值,则目标在中点的左侧。
- \tright = mid - 1:将right更新为中点的左侧位置,表示缩小搜索范围。
- return -1:如果循环结束后仍然没有找到目标,则返回-1,表示目标不存在。
根据二分法的原理,left和right的更新操作可以根据目标所在的位置来进行加减操作或者根据目标的大小进行乘除操作。判断具体是加减还是乘除,需要根据具体的问题来确定。一般情况下,可以根据循环条件进行判断。如果目标在中点的左侧,就将right更新为mid-1;如果目标在中点的右侧,就将left更新为mid+1。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 mySQL5.7.34安装遇到的问题
- ¥15 结构功能耦合指标计算
- ¥20 visual studio中c语言用ODBC链接SQL SERVER
- ¥50 AI大模型精调(百度千帆、飞浆)
- ¥15 非科班怎么跑代码?如何导数据和调参
- ¥15 福州市的全人群死因监测点死亡原因报表
- ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
- ¥15 系统2008r2 装机配置推荐一下
- ¥15 悬赏Python-playwright部署在centos7上
- ¥15 psoc creator软件有没有人能远程安装啊