回答編集履歴

1

「別の関数」の中身を追記

2022/12/21 07:58

投稿

fana
fana

スコア11663

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
+ ```