質問編集履歴

1

質問事項の修正

2021/06/30 16:43

投稿

macaroni323
macaroni323

スコア31

test CHANGED
File without changes
test CHANGED
@@ -28,23 +28,25 @@
28
28
 
29
29
  1: int[] tmp = new int[r - l + 1];
30
30
 
31
- はこれまでの配列の要素と新しい要素比較する要素を比べるために+ 1としているのでしょうか?
31
+ の部分についてr - l + 1はこれまでの配列の要素と新しい要素比較する要素を比べるために+ 1としているのでしょうか?
32
32
 
33
33
 
34
34
 
35
35
  2:int i = l, j = mid + 1, k = 0;
36
36
 
37
- ですがj = mid + 1+1するのは何故なのでしょうか、midが奇数の場合に対応させるためでしょうか?
37
+ ですがj = mid + 1+1するのは何故なのでしょうか、
38
+
39
+ 分割前の配列を2つに分ける場合、lからmidまでが一つの配列、配列を分割した地点+1(mid + 1からr)がもう一つの配列、という理解で良いのでしょうか?
38
40
 
39
41
 
40
42
 
41
- 3:while (i <= mid || j <= r)とするのはなぜなのでしょうか。
43
+ 3:while (i <= mid || j <= r)とするのはなぜなのでしょうか。ループする際に、分割された各々の配列の長さを超えないため、という理解で良いのでしょうか。
42
44
 
43
45
 
44
46
 
45
47
  4:if (i > mid || j <= r && nums[i] > nums[j])について
46
48
 
47
- nums[i] > nums[j]については要素の比較なのでわかるのですが、i > midの部分はどうしこのように書くのでしょうか
49
+ nums[i] > nums[j]については要素の比較なのでわかるのですが、i > midの存在意義がいまいちピンときいません
48
50
 
49
51
 
50
52