質問編集履歴
1
質問事項の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,15 +13,16 @@
|
|
13
13
|
mergeのメソッドの部分が理解できないので、以下の質問をさせてください。
|
14
14
|
|
15
15
|
1: int[] tmp = new int[r - l + 1];
|
16
|
-
はこれまでの配列の要素と新しい要素比較する要素を比べるために+ 1としているのでしょうか?
|
16
|
+
の部分についてr - l + 1はこれまでの配列の要素と新しい要素比較する要素を比べるために+ 1としているのでしょうか?
|
17
17
|
|
18
18
|
2:int i = l, j = mid + 1, k = 0;
|
19
|
-
ですがj = mid + 1
|
19
|
+
ですがj = mid + 1で+1するのは何故なのでしょうか、
|
20
|
+
分割前の配列を2つに分ける場合、lからmidまでが一つの配列、配列を分割した地点+1(mid + 1からr)がもう一つの配列、という理解で良いのでしょうか?
|
20
21
|
|
21
|
-
3:while (i <= mid || j <= r)とするのはなぜなのでしょうか。
|
22
|
+
3:while (i <= mid || j <= r)とするのはなぜなのでしょうか。ループする際に、分割された各々の配列の長さを超えないため、という理解で良いのでしょうか。
|
22
23
|
|
23
24
|
4:if (i > mid || j <= r && nums[i] > nums[j])について
|
24
|
-
nums[i] > nums[j]については要素の比較なのでわかるのですが、i > midの
|
25
|
+
nums[i] > nums[j]については要素の比較なのでわかるのですが、i > midの存在意義がいまいちピンときていません。
|
25
26
|
|
26
27
|
|
27
28
|
```java
|