检查两个单独的数组值并获取最小的一个以将 CW 新数组值插入到新数组中
Check against two separate array values and grabbing the smallest one to insert into a new array the CW new array values
我正在使用数组和条件语句,现在有点迷茫,希望得到一些输入。
所以,我创建了两个数组
int[] one = new int[] {
4160414, 6610574, 2864453, 9352227, -4750937, -3132620, 2208017,
-2226227, -8415856, -9834062, -3401569, 7581671, 8068562, 7520435,
-9277044, -7821114, -3095212, 966785, 6873349, -8441152, -7015683,
-6588326, -282013, 4051534, 9930123, -3093234 };
int[] two = new int[] {
1099626, 6083415, 8083888, -8210392, 2665304, -8710738, -8708241,
8859200, -1255323, 5604634, 2921294, -7260228, 7261646, 1137004,
5805162, 4883369, 8789460, 9769240, 319012, -7877588, -1573772,
5192333, 1185446, 1302131, 4217472, -3471445};
下一步我想的是我将不得不遍历每个数组
for (int i = 0; i < one.Length; i++)
{
int xValue = one[i];
for (int j = 0; j < two.Length; j++)
{
int yValue = two[j];
}
}
现在我有了每个数组的索引,我需要检查 xValue 的索引是否小于 yValue 的索引
if (xValue < yValue)
{
// dO SOMETHING HERE
}
if (yValue < xValue)
{
// Do Something HERE
}
我感到困惑的地方是,根据我的理解,C# 不能将新值推送到数组中,它需要是数组的新实例并复制?
所以我试着做
if (xValue < yValue)
{
Array.Copy(one, x, 13);
}
if (yValue < xValue)
{
Array.Copy(two, x, 13)
}
两个数组都有 26 个值,因此需要创建一个包含 13 个值的新数组来插入检查值,但是 Array.Copy 似乎无法让数组越界检查下限。
我只是对在索引处检查两个数组的值感到困惑,然后获取检查值中的最小值,然后取该小值并将其插入到新数组中,然后使用 foreach 循环来迭代它并将值打印到控制台。 面部手掌
您可以使用 LINQ 的 Zip
来实现:
int[] smallest = one.Zip(two, (o, t) => Math.Min(o,t)).ToArray();
本质上,Zip
会将这两项都提供给 lambda 表达式,让您可以按照您认为合适的方式组合它们。在这种情况下,我们只选择最小值 return 它。
基本上,你需要在声明的时候定义新数组的size。使其大小与 one
相同。然后通过比较索引 i
.
处每个数组中的项目,在每次迭代中添加 one
或 two
中的最小项目
int[] smallest = new int[one.Length];
for (int i = 0; i < one.Length; i++)
{
if (one[i] < two[i])
{
smallest[i] = one[i];
}
else
{
smallest[i] = two[i];
}
}
我正在使用数组和条件语句,现在有点迷茫,希望得到一些输入。
所以,我创建了两个数组
int[] one = new int[] {
4160414, 6610574, 2864453, 9352227, -4750937, -3132620, 2208017,
-2226227, -8415856, -9834062, -3401569, 7581671, 8068562, 7520435,
-9277044, -7821114, -3095212, 966785, 6873349, -8441152, -7015683,
-6588326, -282013, 4051534, 9930123, -3093234 };
int[] two = new int[] {
1099626, 6083415, 8083888, -8210392, 2665304, -8710738, -8708241,
8859200, -1255323, 5604634, 2921294, -7260228, 7261646, 1137004,
5805162, 4883369, 8789460, 9769240, 319012, -7877588, -1573772,
5192333, 1185446, 1302131, 4217472, -3471445};
下一步我想的是我将不得不遍历每个数组
for (int i = 0; i < one.Length; i++)
{
int xValue = one[i];
for (int j = 0; j < two.Length; j++)
{
int yValue = two[j];
}
}
现在我有了每个数组的索引,我需要检查 xValue 的索引是否小于 yValue 的索引
if (xValue < yValue)
{
// dO SOMETHING HERE
}
if (yValue < xValue)
{
// Do Something HERE
}
我感到困惑的地方是,根据我的理解,C# 不能将新值推送到数组中,它需要是数组的新实例并复制?
所以我试着做
if (xValue < yValue)
{
Array.Copy(one, x, 13);
}
if (yValue < xValue)
{
Array.Copy(two, x, 13)
}
两个数组都有 26 个值,因此需要创建一个包含 13 个值的新数组来插入检查值,但是 Array.Copy 似乎无法让数组越界检查下限。
我只是对在索引处检查两个数组的值感到困惑,然后获取检查值中的最小值,然后取该小值并将其插入到新数组中,然后使用 foreach 循环来迭代它并将值打印到控制台。 面部手掌
您可以使用 LINQ 的 Zip
来实现:
int[] smallest = one.Zip(two, (o, t) => Math.Min(o,t)).ToArray();
本质上,Zip
会将这两项都提供给 lambda 表达式,让您可以按照您认为合适的方式组合它们。在这种情况下,我们只选择最小值 return 它。
基本上,你需要在声明的时候定义新数组的size。使其大小与 one
相同。然后通过比较索引 i
.
one
或 two
中的最小项目
int[] smallest = new int[one.Length];
for (int i = 0; i < one.Length; i++)
{
if (one[i] < two[i])
{
smallest[i] = one[i];
}
else
{
smallest[i] = two[i];
}
}