簡體   English   中英

如何對二維數組進行排序

[英]How to sort double dimensional array

我有一個二維數組。 我想根據第二列以降序方式對數組進行排序。 你能幫我么

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

沒有“自動”方式對二維數組進行排序。 如果你想就地做,那么你必須自己實現一個排序算法,然后在第二個“列”上做,每當你移動一個值時,對第一個“列”中的值執行相同的操作出色地。 如果您不確定就地執行此操作,則可以創建兩個 1D arrays,然后使用 Array.Sort 的重載,根據其中一個中的值對兩個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM