質問するログイン新規登録

質問編集履歴

1

質問事項の修正

2021/06/30 16:43

投稿

macaroni323
macaroni323

スコア31

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+1するのは何故なのでしょうか、midが奇数の場合に対応させるためでしょうか?
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