/* -------------------------------------------------- 探索2(二分探索) tansaku02_binary_search.c -------------------------------------------------- */ #include #define YOUSO 10 int kazu,flg; int su[]={6,9,19,33,45,49,55,65,70,98}; /* -------- 関数のプロトタイプ宣言 --------- */ 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 個の数字を探索します(線形探索)\n",YOUSO); for ( i=0 ; i<=YOUSO-1 ; i++ ) { printf("%4d",su[i]); } printf("\n"); return; }