【发布时间】:2020-06-23 09:44:47
【问题描述】:
我想在数组中找到大于给定数字的元素数。 就像我有以下数组一样:{ 10, 113, 34, 2, 19, 57} 并且想要查找大于 30 的数字,那么我会得到 3。
这是我的代码
#include <stdio.h>
int main()
{
int array[] = { 10, 113, 34, 2, 19, 57};
int n = sizeof(array) / sizeof(array[0]);
int A = 30;
int l = 0;
int r = n - 1;
int leftGreater = n;
while (l <= r) {
int m = l + (r - l) / 2;
if (array[m] > A) {
leftGreater = m;
r = m - 1;
}
else
l = m + 1;
}
printf("%d",n - leftGreater);
}
但我得到的不是 3,而是 5。 谁能帮我解决这个问题?
【问题讨论】:
-
l、r、leftGreater这些变量是什么意思?您是否在未排序的数组中进行二进制搜索? -
我也不明白
l、r、m或leftGreater是干什么用的。它看起来像一个二进制搜索。二进制搜索仅在数组已排序时才有效,而您的则不是。
标签: c