2017-03-06 12 views
0

2次元配列をGoでソートしたいと思います。誰も私がこれについてどのように行くことができるかお勧めしますか?例えば2次元配列をソートする

私が持っている場合は、次に

var matrix [3][3]int{ 
    {2,3,1}, 
    {6,3,5}, 
    {1,4,9} 
} 

あなたはこのタイプを自分でソートする方法を定義する必要が

sort.Sort(matrix) 
+1

出力はどのようになると思いますか? – Tyler

答えて

2

、のようなものがあります。スライスにmatrixを変換し、適切な以下の機能を提供する、https://play.golang.org/p/thdf-k2k3o

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] } 
func main() { 
    m := Matrix(matrix) 
    sort.Sort(&m) 
} 

またはsort.Slice関数を使用する:次のいずれかの配列の値を変異させる必要に応じてポインタを使用して、sort.Sortインターフェースを使用するために必要なメソッドを作成することができます。 https://play.golang.org/p/4hrghm9gib

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)