質問編集履歴

1

質問内容

2021/05/11 12:17

投稿

sgefueheiffd674
sgefueheiffd674

スコア19

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 第1引数に数字の配列、第2引数に探したい数字を取り、探したい数字が配列の何番目にあるか(=インデックス。0始まりとすること)を返し、見つからなければNoneを返す関数binary_searchを作成したいのですが、□には何を入れればよいでしょうか。(このプログラムは実行すると入力を待ち、数字を入力してEnterを押すと、binary_searchの第1引数に数字が小さい順にソート済みの配列numbersが、第2引数に入力された数字が与えられて実行され、返り値がprint()される。)
1
+ 第1引数に数字の配列、第2引数に探したい数字を取り、探したい数字が配列の何番目にあるか(=インデックス。0始まりとすること)を返し、見つからなければNoneを返す関数binary_searchを作成したいのですが、どこが間違ってでしょうか。(このプログラムは実行すると入力を待ち、数字を入力してEnterを押すと、binary_searchの第1引数に数字が小さい順にソート済みの配列numbersが、第2引数に入力された数字が与えられて実行され、返り値がprint()される。)
2
2
 
3
3
 
4
4
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  while True:
18
18
 
19
- if :
19
+ if left_index > right_index or (left_index + right_index) // 2 >= len(array):
20
20
 
21
21
  # 探索範囲がなくなったとき、数字は見つからなかったものとする
22
22
 
@@ -24,15 +24,15 @@
24
24
 
25
25
 
26
26
 
27
- center_index =
27
+ center_index = (left_index + right_index) // 2
28
28
 
29
- if :
29
+ if numbers[center_index] == target_num:
30
30
 
31
- right_index =
31
+ right_index = center_index - 1
32
32
 
33
- elif :
33
+ elif numbers[center_index] < target_num:
34
34
 
35
- left_index =
35
+ left_index = center_index - 1
36
36
 
37
37
  else:
38
38
 
@@ -52,4 +52,6 @@
52
52
 
53
53
  print(result)
54
54
 
55
+
56
+
55
57
  ---