#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//二分法
int main()
{
//从1-100的有序数组中查找
int range = 100;//定义范围
int arr[100] = { 0 };//初始化数组
int i = 0;
for (i = 0; i < range;i++) {
arr[i] = i + 1;
}
int m = range - 1;
int min = arr[0];//定义最小值
int max = arr[m];//定义最大值
int count = 0;//计数器
int guess = 0;//定义要猜的数字
printf("请输入你要打印的数:");
scanf("%d", &guess);
//当最小值小于最大值的时候
while (min <= max) {
if (guess > range) {
printf("该值超出范围");
break;
}
int mid = (min + max) / 2;//定义中值
if (guess > mid) { //判断猜的值是否大于中值
min = arr[mid + 1]; //大于中值就将最小值进行重新赋值为,之前的中值加一
count++;
}
else if (guess < mid) {//判断猜的值是否小于中值
max = arr[mid - 1]; //小于中值就将最大值进行重新赋值为,之前的中值减一
count++;
}
else if(guess == mid){
count++;
printf("已找出该值!打印次数为:%d",count);
break;
}
}
}
C语言二分法查找
最新推荐文章于 2024-09-09 19:09:26 发布