【问题标题】:Elements greater than certain number大于特定数量的元素
【发布时间】: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。 谁能帮我解决这个问题?

【问题讨论】:

  • lrleftGreater 这些变量是什么意思?您是否在未排序的数组中进行二进制搜索?
  • 我也不明白lrmleftGreater 是干什么用的。它看起来像一个二进制搜索。二进制搜索仅在数组已排序时才有效,而您的则不是。

标签: c


【解决方案1】:

一个简单的for 循环就足够了:

#include <stdio.h>

int main(void)
{
    int array[] = { 10, 113, 34, 2, 19, 57 }; 
    int n = sizeof(array) / sizeof(array[0]); 
    int x = 30, res = 0;

    for (int i = 0; i < n; i++)
    {
        if (array[i] > x)
        {
            res++;
        }
    }
    printf("%d\n", res);
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2020-12-24
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多