回答編集履歴
1
「別の関数」の中身を追記
test
CHANGED
@@ -85,3 +85,27 @@
|
|
85
85
|
ふつーは配列に関しては「先頭のポインタとサイズで」みたく指示されそうに思うのだが,「ポインタ」としか指定されていないから,↑のコードではポインタ2つを渡す形とした.
|
86
86
|
|
87
87
|
二分探索の具体実装については「C言語 二分探索」とかでググれば参考にできるコードとかも複数見つかると思うので,好きなのを移植すれば良いかと.
|
88
|
+
|
89
|
+
---
|
90
|
+
|
91
|
+
[追記]
|
92
|
+
「別の関数」の中身をなんとなく書いてみたけど,あまり自信ないっす.
|
93
|
+
(ダメそうなら 修正 or 無視 されたい)
|
94
|
+
|
95
|
+
```C
|
96
|
+
size_t OtherFunction( const int *Begin, const int *End, int SearchTgtVal )
|
97
|
+
{
|
98
|
+
if( SearchTgtVal > *Begin || *(End-1) > SearchTgtVal )return 0;
|
99
|
+
|
100
|
+
const int *p[] = { Begin, End };
|
101
|
+
while( p[0]<p[1] )
|
102
|
+
{
|
103
|
+
const int *M = p[0] + ( (p[1]-p[0])>>1 );
|
104
|
+
int d = SearchTgtVal - *M;
|
105
|
+
if( d==0 )return (M-Begin)+1;
|
106
|
+
if( d<0 )p[0] = M+1;
|
107
|
+
else p[1] = M;
|
108
|
+
}
|
109
|
+
return 0; //when not found
|
110
|
+
}
|
111
|
+
```
|