【问题标题】:Function that finds value and order which is value bigger than threshold in other array values在其他数组值中查找大于阈值的值和顺序的函数
【发布时间】:2025-12-26 07:35:11
【问题描述】:

我有一个如下所示的数组。

a[125,256,258,259,276,257]

如果数组值中有任何大于阈值(例如 10)的差异,我正在尝试查找数组顺序号。

在上述情况下;

a[**125**,256,258,259,**276**,257]

a[0]:超出阈值

a[4]:超出阈值

有什么简单的方法可以在 C 代码中找到它吗?

【问题讨论】:

  • 所以我们将考虑大多数彼此接近的数字?并根据阈值找到差异?
  • 不需要找差异,只需要找出哪个超出阈值。
  • Okey 阈值但根据什么?我们的参考是什么?
  • 如你所说,引用是大多数相互接近的数字
  • 如果差值大于10,就会乱序。

标签: c algorithm sorting


【解决方案1】:

方法:你可以在脑海中画一个圆圈。这个圆的半径是阈值,每个元素都是一个中心。并确定一个圆圈是否包含与其他圆圈相比较少的元素。

您可以使用以下步骤:

  • 定义阈值
  • 检查每个元素与另一个元素的差异
  • 对差异小于阈值的元素进行计数并计数
  • 如果有 1 个或更少的元素,则此元素是单独的,因此超出阈值。

这是代码和结果:

#include<math.h>
#include<stdio.h>

int main()
{

    int a[6] = {125,256,258,259,276,257};

    int threshold = 10;
    for(int i=0; i<6;i++)
    {
        int counter = 0;
        for(int j=0; j<6;j++)
            counter += abs(a[j]-a[i])<=threshold?1:0;

        if(counter<2)
            printf("Detected out of threshold:  %d\n",a[i]);

        counter = 0;

    }

}

输出:

Detected out of threshold:  125
Detected out of threshold:  276

【讨论】: