ホームページ >バックエンド開発 >Golang >Go で 2D 配列をソートするには?

Go で 2D 配列をソートするには?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 18:52:15247ブラウズ

How to Sort a 2D Array in Go?

Go での 2 次元配列の並べ替え

Go で 2 次元配列を並べ替えるには、カスタムの並べ替え基準を定義する必要があります。 1 つのアプローチは、sort.Interface を実装して並べ替えに必要なメソッドを提供することです。

type Matrix [3][3]int

func (m Matrix) Len() int { return len(m) }
func (m Matrix) Less(i, j int) bool {
    for x := range m[i] {
        if m[i][x] == m[j][x] {
            continue
        }
        return m[i][x] < m[j][x]
    }
    return false
}

func (m *Matrix) Swap(i, j int) { m[i], m[j] = m[j], m[i] }

ここで、Matrix は Len()、Less()、および Swap() メソッドを定義することによって sort.Interface を実装します。 Len() は行列の長さを返し、Less() は行列の 2 つの行を要素ごとに比較し、Swap() は 2 つの行を交換します。

func main() {
    m := Matrix(matrix)
    sort.Sort(&m)
}

この例では、行列は事前定義された 2 つの行列です。次元配列、m は sort.Interface を実装する行列のコピーです。 &m を sort.Sort() に渡すことで、行列はその場でソートされます。

別の方法は、sort.Slice() 関数を使用することです。

sort.Slice(matrix[:], func(i, j int) bool {
    for x := range matrix[i] {
        if matrix[i][x] == matrix[j][x] {
            continue
        }
        return matrix[i][x] < matrix[j][x]
    }
    return false
})

fmt.Println(matrix)

ここでは、matrix[ :] は行列をスライスに変換し、提供された無名関数が並べ替え基準を定義します。スライスと関数を sort.Slice() に渡すと、行列がその場でソートされます。

以上がGo で 2D 配列をソートするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。