有关C++二分查找
如果元素共有奇数个,如11个。那么第一次的middle是第五个元素,还是第六个元素呢?C++的”/“是四舍五入,还是舍?(intmiddle;)...
如果元素共有奇数个,如11个。那么第一次的middle是第五个元素,还是第六个元素呢?C++的”/“ 是四舍五入,还是舍?(int middle;)
展开
4个回答
展开全部
C 和C++的/是除法取整.
比如你这里的11个元素,11/2按照自然结果为5.5,但是在C和C++中整数进行相除,仍然得到整数结果,所以就是5.5的整数部分即5.
至于是第五个还是第六个元素,要看你这个5是作为数组的下标索引,还是用于其它的计算元素的顺序了.(按照通常的做法,是作为下标索引,就是第六个元素)
比如你这里的11个元素,11/2按照自然结果为5.5,但是在C和C++中整数进行相除,仍然得到整数结果,所以就是5.5的整数部分即5.
至于是第五个还是第六个元素,要看你这个5是作为数组的下标索引,还是用于其它的计算元素的顺序了.(按照通常的做法,是作为下标索引,就是第六个元素)
追问
区间是(left<=right)
还是(left<right)呢?
还是一样的呢?
追答
通常是left<right,因为相等的时候,已经没有必要再进入分支了.
展开全部
如果是11个元素,那么11/2 = 5,即middle取的是第6个元素(C++里面的下标都是从0开始)。C/C++里面对整形数的除法都是只取整数部分而丢弃小数部分,即9/10也等于0,而不等于1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
向0靠近(正数变小,负数变大)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是舍
是舍
是舍
是舍
是舍
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询