/* ------------------------------------------ 探索(2) 二分探索 ------------------------------------------ */ #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() { num_display(); /* 配列の表示 */ printf("探したい値を入れてください -->"); scanf("%d",&kazu); flg=0; binary_search(); /* 二分探索 */ if ( flg == 1 ) printf("見つかりました \n"); else printf("見つかりませんでした \n"); } void num_display() { int i; printf(" %d 個の数字を探索します(二分探索) \n",YOUSO); for ( i=0 ; i<=YOUSO-1 ; i++ ){ printf(" %d ",su[i]); } printf("\n"); printf("\n"); } void binary_search() { int lower,upper,k; printf(" --------- Search START --------- \n\n"); lower=0; upper=YOUSO-1; while ( !( flg==1 || lower>upper ) ) { k = (lower+upper) / 2; if ( kazu == su[k] ){ flg=1; } else { if ( kazu > su[k] ) lower = k + 1; else upper = k - 1; } } }