对二维矩阵进行排序的方法,我怎样才能使该方法通用?

Posted

技术标签:

【中文标题】对二维矩阵进行排序的方法,我怎样才能使该方法通用?【英文标题】:Method for Sorting 2D Matricies, How can i make the method generic? 【发布时间】:2013-09-19 17:52:56 【问题描述】:
public static void Sort2DArray(int[,] matrix)

    var numb = new int[matrix.GetLength(0) * matrix.GetLength(1)];

    int i = 0;
    foreach (var n in matrix)
    
        numb[i] = n;
        i++;
    
    Array.Sort(numb);

    int k = 0;
    for (i = 0; i < matrix.GetLength(0); i++)
    
        for (int j = 0; j < matrix.GetLength(1); j++)
        
            matrix[i, j] = numb[k];
            k++;
        
    

我很好奇如何使这个方法通用。我希望它可以对双矩阵、字符串矩阵等进行排序。

【问题讨论】:

无关但你可以写numb[i++] = n;matrix[i, j] = numb[k++]; 【参考方案1】:

您可以将IComparable 接口用作泛型类型T 说明符。

【讨论】:

谢谢。我已经解决了。这个问题是一种测试。我从来没有问过任何问题。【参考方案2】:

查看这些链接

    How to Sort 2D Array in C# How do I sort a two-dimensional array in C#? http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=151

【讨论】:

【参考方案3】:

我已经解决了。该方法如下所示:

    public static void Sort2DArray<T>(T[,] matrix)
    
        var numb = new T[matrix.GetLength(0) * matrix.GetLength(1)];

        int i = 0;
        foreach (var n in matrix)
        
            numb[i] = n;
            i++;
        
        Array.Sort(numb);

        int k = 0;
        for (i = 0; i < matrix.GetLength(0); i++)
        
            for (int j = 0; j < matrix.GetLength(1); j++)
            
                matrix[i, j] = numb[k];
                k++;
            
        
    

【讨论】:

以上是关于对二维矩阵进行排序的方法,我怎样才能使该方法通用?的主要内容,如果未能解决你的问题,请参考以下文章

按属性对 JSON 数组进行排序的通用方法

Python中怎样计算3%乘100

R中的性能:对矩阵中的行元素进行排序的最快方法是啥?

如何按列对二维数组(锯齿状)进行排序[重复]

C语言怎样对二维数组中每个元素进行选择排序

使用vector<vector<int>> c ++按它们的总和对二维矩阵进行排序?