Java 我知道如何找到一个中点,但在这段代码中,我不确定如果我们给它加上一个值,它将如何计算中点 private int-mid(int-left,int-right){ 如果(左
让我们逐段分析此代码:Java 我知道如何找到一个中点,但在这段代码中,我不确定如果我们给它加上一个值,它将如何计算中点 private int-mid(int-left,int-right){ 如果(左,java,arrays,Java,Arrays,让我们逐段分析此代码: private int mid(int left, int right) { if (left <= right) return (right - left) / 2 + left; else return (left - right) / 2 + right; } (right-left)是直线的长度;将其除以二,则得到一半的距离。将该值与左值相加,则向右移动了直线长度的一半 return (right - lef
private int mid(int left, int right) {
if (left <= right)
return (right - left) / 2 + left;
else
return (left - right) / 2 + right;
}
(right-left)
是直线的长度;将其除以二,则得到一半的距离。将该值与左值相加,则向右移动了直线长度的一半
return (right - left) / 2 + left;
此代码说明了
left
实际上可能大于right
,这意味着它实际上位于右侧。如果是,则right
和left
的角色将在下一行切换。另一种分析:
else
return (left - right) / 2 + right;
如果
left,为什么不省略left
和right
,试着在n,比如说,20和30之间找到中点,看看会发生什么?从20年开始,如果你手工计算,你怎么找到中点?你能用同样的方法编写代码吗?(提示:您可以使用一行代码,而不是if…else
语句。)从这里我建议比较差异。@code学徒的方法是一种常见做法,当您需要计算值时,应始终使用这种方法。(以及在一般编程中)另一方面,这可能是一个静态
方法。因此,你的意思是,如果我们正在寻找一个值,它试图做的是我们应该走哪条路。@moalbait是的。即使参数被称为左和右,也可能有人在左中放置的值比在右中的值更高,其中箱子右边在左边,左边在右边。
else
return (left - right) / 2 + right;
mid = (left - right)/2 + right
= left/2 - right/2 + right
= left/2 + right/2
= (left + right)/2