二分探索

C言語

#include <stdio.h>
#define N 10
int main(void)
{
	int d[N];
	// データ作成(1からNまでを格納)
	for(int i = 0; i < N; i++){
		d[i] = i + 1;
		printf("%3d ", d[i]);
	}
	printf("\n");

	// キーを設定
	int key;
	printf("キーを入力:");
	scanf("%d", &key);

	// 二分探索
	int left = 0, right = N - 1;
	int flag = 0;

	do{
		int m = (left + right) / 2;
		if(key == d[m]){
			flag = 1;
		}else if(key < d[m]){
			right = m - 1;
		}else{
			left = m + 1;
		}
	}while(flag != 1 && left <= right);
	if(flag == 1){
		printf("%dは見つかった\n", key);
	}else{
  		printf("%dは見つからない\n", key);
	}

	return 0;
}