讲解对象:C语言二分查找法 作者:融水公子 rsgz 前提:必须是有序的数据 left=0; middle=(left+right); right=9; left>right 意味着找不到
#include<stdio.h> #include<stdlib.h> 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; }
|