質問編集履歴
1
修正中のコードを載せました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -42,4 +42,30 @@
|
|
42
42
|
```
|
43
43
|
↑これもうまくいかなかった例です。
|
44
44
|
### 補足情報(FW/ツールのバージョンなど)
|
45
|
-
実行環境はpaiza.ioです。
|
45
|
+
実行環境はpaiza.ioです。
|
46
|
+
|
47
|
+
###修正中のコード
|
48
|
+
頂いた回答をもとに修正しました。探索したい値(val)が3,7,11なら正常に探索結果が表示され、
|
49
|
+
1,5,9,13なら、何も表示されない状況です。まだうまく動作しません。以下修正中のコードです。
|
50
|
+
```C
|
51
|
+
#include <stdio.h>
|
52
|
+
|
53
|
+
int main(void){//二分探索法
|
54
|
+
|
55
|
+
int array[7]={1,3,5,7,9,11,13};
|
56
|
+
int lo=0, mid, hi=6;
|
57
|
+
int val=11;//探索したい値
|
58
|
+
|
59
|
+
while(lo < hi){//継続条件修正済み
|
60
|
+
mid = (lo + hi) / 2;
|
61
|
+
if(array[mid] < val){
|
62
|
+
lo = mid + 1;
|
63
|
+
}else if(array[mid] > val){
|
64
|
+
hi = mid - 1;
|
65
|
+
}else{
|
66
|
+
printf("値「%d」は配列の[%d]番目で発見しました",val,mid);
|
67
|
+
break;//追記
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
```
|