#include <stdio.h> #include <string.h> int main() { //初始化一维整型数组 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; //随机设定一个要寻找的数 int aim = 9; //用整个数组的占用空间大小 / 数组中一个元素的占用空间大小 //得到数组中的元素个数sz,定义两个变量存储初始左下标和右下标 int sz = sizeof(arr) / sizeof(arr[0]); int left = 0; int right = sz - 1 ; //开始采用二分法在数组中查找目标数aim while (left <= right) { //定义变量subscript,使得从最中间的位置开始查找 //如不满足条件,则排除了一半的非目标元素 //继续取剩余疑似目标的最中间值来对比寻找 //直到左下标与右下标重合或交错,结束循环 int subscript = (left + right) / 2; if (arr[subscript] < aim) { left = subscript + 1; } else if (arr[subscript] > aim) { right = subscript - 1; } else { printf("找到了,下标是:%d\n", subscript); break; //找到元素之后跳出循环 } } //左下标大于右下标,说明数组中没有目标元素 if (left > right) printf("找不到\n"); return 0; }