Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#查找数组中最接近给定数字的所有值_C#_Arrays - Fatal编程技术网

C#查找数组中最接近给定数字的所有值

C#查找数组中最接近给定数字的所有值,c#,arrays,C#,Arrays,鉴于: 查找数组中最接近0的所有值 目前正在使用网站上找到的另一个代码,但它只告诉我1个值 int[] myArray = new int[]{-8, -17, 12, 8, 16, -3, 7, 3}; 在当前情况下,-3和3都最接近0,但由于-3排在第一位,它只输出-3 是否有另一种方法可以在查找所有值而不是只查找第一个()时执行此操作?在最低绝对值上使用分组 int nearest = myArray.Select(p => new {Value = p, Difference =

鉴于:

查找数组中最接近0的所有值

目前正在使用网站上找到的另一个代码,但它只告诉我1个值

int[] myArray = new int[]{-8, -17, 12, 8, 16, -3, 7, 3};
在当前情况下,-3和3都最接近0,但由于-3排在第一位,它只输出-3


是否有另一种方法可以在查找所有值而不是只查找第一个()时执行此操作?

在最低绝对值上使用分组

int nearest = myArray.Select(p => new {Value = p, Difference = Math.Abs(p - searchValue)}).OrderBy(p => p.Difference).First().Value;

在最低绝对值上使用分组

int nearest = myArray.Select(p => new {Value = p, Difference = Math.Abs(p - searchValue)}).OrderBy(p => p.Difference).First().Value;

再加一句。如果要使用O(n)复杂度而不进行排序,则可以通过以下方式进行:

int[] result = myArray
    .OrderBy(i => Math.Abs(i - searchValue))
    .GroupBy(i => Math.Abs(i - searchValue))
    .First()
    .ToArray();
public List GetClosestNumbers(int-searchVal)
{
int[]myArray=newint[]{-8,-17,12,8,16,-3,7,3};
int minimumDist=int.MaxValue;
列表输出=新列表();
for(int i=0;i
只是为了补充这一点。如果要使用O(n)复杂度而不进行排序,则可以通过以下方式进行:

int[] result = myArray
    .OrderBy(i => Math.Abs(i - searchValue))
    .GroupBy(i => Math.Abs(i - searchValue))
    .First()
    .ToArray();
public List GetClosestNumbers(int-searchVal)
{
int[]myArray=newint[]{-8,-17,12,8,16,-3,7,3};
int minimumDist=int.MaxValue;
列表输出=新列表();
for(int i=0;i
Your calling.First()。因此,您将只获得1个结果。并将其分配给
int
so…您的calling.First()。因此,您将只获得1个结果。并将其分配给
int
so…提高效率的道具!谢谢你,伙计:)提高效率的道具!谢谢你,伙计:)