C#程序按升序对二维数组元素进行排序?(先对列进行排序,然后对行进行排序)

时间:2014-04-24 11:42:24

标签: c#

public void ascendingOrder()
{
    // helper class
    double temp = 0;

    for (int j = 0; j < numbers.Length; j++)
    {
        for (int i = 0; i < numbers.Length - 1; i++)
        {
            if (numbers[i] > numbers[i + 1])
            {
                temp = numbers[i];
                numbers[i] = numbers[i + 1];
                numbers[i + 1] = temp;
            }
        }
    }
}

我需要代码首先对列进行排序,然后对行进行排序,如下例所示!

输入:

  

n = 3

2 2 1 
3 53 4 
32 5 3 

输出:

1 2 2 
3 3 54 
4 32 53 

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

int[] array = new int[] { 3, 1, 4, 5, 2 };
Array.Sort<int>(array,
                new Comparison<int>(
                        (i1, i2) => i1.CompareTo(i2)
                ));

Better way to sort array in descending order

答案 2 :(得分:0)

我相信这个人目前正在写考试,所以linq方法不会让他通过这个考试。 试试这段代码。

        double[,] numbers = new double[,]{ { 1, 3, 2 }, { 4, 6, 5 }, { 7, 9, 8 } };
        // helper class
        double temp = 0;

        for (int k = 0; k < 3; k++)
        {
            for (int j = 0; j < 2; j++)
            {
                for (int i = 1; i < 3; i++)
                {
                    if (numbers[k,i] < numbers[k,j])
                    {
                        temp = numbers[k,i];
                        numbers[k,i] = numbers[k,j];
                        numbers[k,j] =temp;
                    }
                }
            }
        }