#include #include #include #define TRUE 0 #define FALSE -1 int binary_search(int a[], int key, int num); void main(void){ int a[10], key = 25, num; printf("** TESTBINS: 二分探索によるバイナリー・サーチ ***\n"); getchar(); a[0] = 0; a[1] = 5; a[2] = 10; a[3] = 15; a[4] = 20; a[5] = 25; a[6] = 30; a[7] = 35; a[8] = 40; a[9] = 45; if((num = binary_search(a, key, 10)) == FALSE){/* 失敗 */ printf(" 配列には見つかりませんでした。 \n"); getchar(); }/* 失敗 */ else{/* 成功 */ printf("%d は %d 個目に見つかりました。 \n", key, num); getchar(); }/* 成功 */ return; } /*******************************************/ int binary_search(int a[], int key, int num) /*******************************************/ { int middle, low, high; low = 0; high = num + 1; while(low <= high){/*while*/ middle = (low + high)/2; if(key == a[middle]){/*FOUND*/ return middle; }/*FOUND*/ else if(key < a[middle]){/* 小 */ high = middle - 1; }/* 小 */ else{/* 大 */ low = middle + 1; }/* 大 */ }/*while*/ return FALSE; }