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

回答編集履歴

2

ややこしさ修正

2015/11/01 07:14

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -9,16 +9,16 @@
9
9
  Right = 9
10
10
  Left <= Right のため継続
11
11
  Middle = (0 + 9) / 2 = 4
12
- 4にある値は5で,5 < 9なのでLeft = 4 + 1 = 5
12
+ arr[4] = 5 < 9なのでLeft = 4 + 1 = 5
13
13
  ・2回目
14
14
  Left = 5
15
15
  Right = 9
16
16
  Left <= Right のため継続
17
17
  Middle = (5 + 9) / 2 = 7
18
- 7にある値は8で,8 < 9なのでLeft = 7 + 1 = 8
18
+ arr[7] = 8 < 9なのでLeft = 7 + 1 = 8
19
19
  ・3回目
20
20
  Left = 8
21
21
  Right = 9
22
22
  Left <= Right のため継続
23
23
  Middle = (8 + 9) / 2 = 8
24
- 8にある値は9で,9 = 9なので"Found!"
24
+ arr[8] = 9 = 9なので"Found!"

1

丁寧に追ってみる

2015/11/01 07:14

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,24 @@
1
1
  2回目でRightは8ではなく9です.
2
2
  つまり,3回目はLeft = 8, Right = 9となり,
3
- ifで(8 + 9) / 2 = 8となり,ここで目的の値である9が見つかります.
3
+ ifで(8 + 9) / 2 = 8となり,ここで目的の値である9が見つかります.
4
+ ---
5
+
6
+ 1回目から丁寧に追ってみると
7
+ ・1回目
8
+ Left = 0
9
+ Right = 9
10
+ Left <= Right のため継続
11
+ Middle = (0 + 9) / 2 = 4
12
+ 4にある値は5で,5 < 9なのでLeft = 4 + 1 = 5
13
+ ・2回目
14
+ Left = 5
15
+ Right = 9
16
+ Left <= Right のため継続
17
+ Middle = (5 + 9) / 2 = 7
18
+ 7にある値は8で,8 < 9なのでLeft = 7 + 1 = 8
19
+ ・3回目
20
+ Left = 8
21
+ Right = 9
22
+ Left <= Right のため継続
23
+ Middle = (8 + 9) / 2 = 8
24
+ 8にある値は9で,9 = 9なので"Found!"