/* ------------------------------------------------------- 探索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; } /* ------- 二分探索 binary_search関数 ------*/ void binary_search(void) { int k,kagen,jogen; 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; } /* ------- 表示処理 num_display関数 ------*/ void num_display(void) { int i; printf("%d 個の数字を探索します(線形探索 Linear Search)\n",YOUSO); for ( i=0 ; i<=YOUSO-1 ; i++) { printf("%4d",su[i]); } printf("\n"); return; }