/* ------------------------------------------------- 探索2(二分探索) tansaku02_binary_search ------------------------------------------------- */ #include #define YOUSO 10 int su[]={6,9,19,33,45,49,55,65,70,98}; int kazu,flg; /* -------- 関数のプロトタイプ宣言 -------- */ void num_display(void); void binary_search(void); /* -------- main関数 -------- */ int main(void) { num_display(); printf("\n探したい値を入れて下さい-->"); scanf("%d",&kazu); flg=0; binary_search(); if ( flg==1 ) printf("見つかりました\n"); else printf("データが見つかりません\n"); return 0; } /* -------- 表示処理 num_display関数 -------- */ void num_display(void) { int i; printf("%d 個の数字を探索します(二分探索 binary Search)\n",YOUSO); for ( i=0 ; i<=YOUSO-1 ; i++ ) { printf("%4d",su[i]); } printf("\n"); return; } /* -------- 二分探索 binary_search関数 -------- */ void binary_search(void) { int kagen,jogen,k; printf("\n ---------- Search START ---------- \n"); kagen=0; jogen=YOUSO-1; while ( !(flg==1 || kagen>jogen ) ) { k = ( kagen + jogen ) / 2; if ( kazu==su[k] ) flg=1; else if ( kazu>su[k] ) kagen=k+1; else jogen=k-1; } return; }