如何对二维数组进行排序

时间:2020-12-28 11:17:59

标签: vb.net

我有一个二维数组。我想以降序方式根据第二列对数组进行排序。你能帮我吗

Dim house_rank(12, 1) As Integer
        For h = 1 To 12
            house_rank(h - 1, 0) = h
            house_rank(h - 1, 1) = h_val(h - 1)
        Next

1 个答案:

答案 0 :(得分:0)

没有“自动”方式对二维数组进行排序。如果你想就地做,那么你必须自己实现一个排序算法,只需在第二个“列”上进行,每当你移动一个值时,对第一个“列”中的值执行相同的操作作为好。如果您不打算就地进行,那么您可以创建两个一维数组,然后使用 Array.Sort 的重载,根据其中一个数组中的值对两个数组进行排序,然后重新填充原始数组。这是一个可以做到这一点的方法:

Private Sub SortBySecondColumn(Of T)(matrix As T(,))
    Dim upperBound = matrix.GetUpperBound(0)
    Dim firstColumn(upperBound) As T
    Dim secondColumn(upperBound) As T

    'Copy data from 2D array to 1D arrays.
    For i = 0 To upperBound
        firstColumn(i) = matrix(i, 0)
        secondColumn(i) = matrix(i, 1)
    Next

    'Sort both columns by the second column.
    Array.Sort(secondColumn, firstColumn)

    'Copy data back from 1D arrays to 2D array.
    For i = 0 To upperBound
        matrix(i, 0) = firstColumn(i)
        matrix(i, 1) = secondColumn(i)
    Next
End Sub