当前位置:编程学习 > C#/ASP.NET >>

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[] 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[] a1 = new int[] { 3, 6, 5, 0 };
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开发的,其他的办法还有吗?最好给出例子,多谢 --------------------编程问答--------------------
引用 8 楼 weilu0328 的回复:
我用的是VS2005开发的,其他的办法还有吗?最好给出例子,多谢

上面几个楼已经有了,循环判断吧 --------------------编程问答--------------------

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();
--------------------编程问答-------------------- 如果要是加上List遍历的话,VS05如果来判断呢 谢
我写成这样 不知知道正确不

//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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,