讲解对象:C语言二分查找法
作者:融水公子 rsgz
前提:必须是有序的数据
left=0; middle=(left+right); right=9;
left>right 意味着找不到
#include
#include
int main(int argc, const char* argv[]) {
int score[10], x, i, flag = 0;
int left = 0, middle, right = 9;
printf("input ten numbers please:\n");
for (i = 0; i<10; i++) {
scanf_s("%d", &score[i]);
}
printf("\n查找目标:\n");
scanf_s("%d", &x);
while (left <= right) {
middle = (left + right) / 2;
if (score[middle] == x) {
printf("数据存在 位置score[%d]\n", middle);
flag = 1;
break;
}
else if (score[middle]>x) {//数据在左边 中间线赋值给右边界
right = middle - 1;
}
else { //在右边 中间线赋值给左边界
left = middle + 1;
}
}
if (flag == 0) {
printf("数据不存在!\n");
}
system("pause");
return 0;
}