C/C++の宿題片付けます 124代目
at TECH
469:464
09/03/22 18:28:13
>>464 修正
#include <stdio.h>
#define returnVal(n) {free(data); return n;}
int BinarySearch(void);
int main(void) {
while(BinarySearch() == 0); return 0;
}
int BinarySearch(void) {
int n=0, *data, key=0, begin=0, end, mid, i;
if(scanf("%d", &n) != 1) return 2;
if(n == 0) return 1;
if(n < 0) return 0;
if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3;
for(i = 0; i < n; i++) {
if(scanf("%d", &(data[i])) != 1) returnVal(2)
if(data[i] == 0) returnVal(1)
}
if(scanf("%d", &key) != 1) returnVal(2)
if(key == 0) returnVal(1)
for(i = 1, end = n-1; begin < end; i++){
mid = (begin + end) / 2;
if(data[mid] < key)
begin = mid + 1;
else
end = mid - 1;
}
printf("%d\n", i);
returnVal(0)
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5407日前に更新/195 KB
担当:undef