#includeint main() { int n=1, num, n1, i; int mid;//定义中间的数的坐标 int left, right;//定义下标 scanf("%d", &n); n1 = n; int arr[100]; for (i = 0; i < n; i++)//数组中插入元素 { scanf("%d", &arr[i]); } scanf("%d", &num);//确定要找的数 left = 0; right = n1 - 1; //二分查找开始 while (left <= right) { mid = (left + right) / 2;//确保每次查找完后都进行一次范围缩减 if (arr[mid] < num) { left = mid + 1; } else if (arr[mid] > num) { right = mid - 1; } else//如果找到该数,此时左右下标一定相等 { printf("%d", mid+1); break; } } if (left > right)//如果找的数不在数组内,会出现下标交叉,即左下标大于右下标 { printf("None"); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)