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