List中有三个整型数组对象,如何比较数组对象中的元素
三个数组长度一样,我想比较三个数组对象的第一个元素,找出最大的保留,以此类推;int[] a1 = new int[] { 3, 6, 5, 0 };
int[] a2 = new int[] { 1, 9, 7, 6 };
int[] a3 = new int[] { 5, 3, 5, 8 };
比较后得到新数组对象 ax = new int[]{5, 9, 7, 8};
请问如何在List中实现呢?thanks --------------------编程问答-------------------- 笨办法:
1、循环数组长度次
2、每次比较3个数,取最大数
3、存入新数组 --------------------编程问答-------------------- 能给个确切的例子吗?谢过了 --------------------编程问答--------------------
int[] a1 = new int[] { 3, 6, 5, 0 };
int[] a2 = new int[] { 1, 9, 7, 6 };
int[] a3 = new int[] { 5, 3, 5, 8 };
List<int[]> list = new List<int[]>();
list.Add(a1);
list.Add(a2);
list.Add(a3);
int[] a4 = new int[4];
for (int i = 0; i < a4.Length; i++)
{
a4[i] = list.Max(arr=>arr[i]);
}
a4的结果是 5, 9, 7, 8 --------------------编程问答-------------------- int[] result = new int[a1.Length];
for(int i = 0; i < a1.Length; i++)
{
result[i] = getMax(i);
}
int getMax(int index)
{
int t = a1[index];
if(t < a2[index])
{
t = a2[index];
}
if(t < a3[index])
{
t = a3[index];
}
return t;
} --------------------编程问答--------------------
--------------------编程问答--------------------
int[] a1 = new int[] { 3, 6, 5, 0 };
int[] a2 = new int[] { 1, 9, 7, 6 };
int[] a3 = new int[] { 5, 3, 5, 8 };
int[] ax = new int[4];
int tmp;
for(int i = 0; i < 4; i++)
{
tmp = a1[i] > a2[i] ? a1[i] : a2[i];
tmp = tmp > a3[i] ? tmp : a3[i];
ax[i] = tmp;
}
--------------------编程问答-------------------- int[] a1 = new int[] { 3, 6, 5, 0 };
int[] a1 = new int[] { 3, 6, 5, 0 };
int[] a2 = new int[] { 1, 9, 7, 6 };
int[] a3 = new int[] { 5, 3, 5, 8 };
int[] ax = new int[4];
int tmp;
for(int i = 0; i < 4; i++)
{
tmp = Math.Max(a1[i], a2[i]);
tmp = Math.Max(tmp, a3[i]);
ax[i] = tmp;
}
int[] a2 = new int[] { 1, 9, 7, 6 };
int[] a3 = new int[] { 5, 3, 5, 8 };
var result = Enumerable.Range(0, a1.GetLength(0)).Select(x => (new int[] { a1[x], a2[x], a3[x] }).Max()).ToArray(); --------------------编程问答-------------------- 我用的是VS2005开发的,其他的办法还有吗?最好给出例子,多谢 --------------------编程问答--------------------
上面几个楼已经有了,循环判断吧 --------------------编程问答--------------------
--------------------编程问答-------------------- 如果要是加上List遍历的话,VS05如果来判断呢 谢
var result =a1.Select((x,y)=>new{x,y}).Concat(a2.Select((x,y)=>new{x,y})).Concat(a3.Select((x,y)=>new{x,y}))
.GroupBy(x=>x.y).Select(x=>x.Max(y=>y.x)).ToArray();
我写成这样 不知知道正确不
//colCount 数组的长度
private static int[] AssignMaxWidthBetweenTables(List<int[]> lstMaxLenOfColWidth, int colCount)
{
int temp;
int[] intRet = new int[colCount - 1];
for (int i = 0; i < lstMaxLenOfColWidth.Count; i++)
{
for (int j = 0; j < colCount; j++)
{
temp = Math.Max(lstMaxLenOfColWidth[i][j], lstMaxLenOfColWidth[i + 1][j]);
temp = Math.Max(temp, lstMaxLenOfColWidth[i + 2][j]);
intRet[j] = temp;
}
}
} --------------------编程问答-------------------- 关键是我要在外层的List obj 中循环呀,还有人知道吗
补充:.NET技术 , C#