質問編集履歴
1
質問内容
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
第1引数に数字の配列、第2引数に探したい数字を取り、探したい数字が配列の何番目にあるか(=インデックス。0始まりとすること)を返し、見つからなければNoneを返す関数binary_searchを作成したいのですが、
|
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
|
---
|