我有一个二维数组。我想以降序方式根据第二列对数组进行排序。你能帮我吗
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
答案 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