在 Go 中,对二维数组进行排序需要定义自定义排序标准。一种方法是实现 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() 按元素比较矩阵的两行,Swap() 交换两行。
func main() { m := Matrix(matrix) sort.Sort(&m) }
在此示例中,矩阵是预定义的两行维数组,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 中对二维数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!