/* -------------------------------------------------- 探索2(二分探索)tansaku02_binary_search -------------------------------------------------- */ #include #define YOUSO 10 int flg,kazu; 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,jogen,kagen; 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; } } } /* -------- 表示処理 num_display -------- */ void num_display(void){ int i; printf("%d 個の数字を探索します(二分探索 BinarySearch)\n",YOUSO); for ( i=0 ; i<=YOUSO-1 ; i++) { printf("%4d",su[i]); } printf("\n"); return; }