当前位置: 首页 > 面试题库 >

朗朗排序2D阵列

任宾鸿
2023-03-14
问题内容

我想在Go中排序一个二维数组。谁能建议我该怎么做?

例如,如果我有,

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

然后有类似的东西,

sort.Sort(matrix)

问题答案:
您必须定义自己如何对这种类型进行排序。您可以创建必要的方法来使用该 sort.Sort接口,并根据需要使用指针来更改数组值: 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函数,转换 matrix为切片并提供适当的较少函数: 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)


 类似资料:
  • 我正试图在一个遗留的Java/spring/冬眠项目中工作一个cron作业,所以我决定使用spring调度器。 我想让MyTask.DoStuff在每个月的第一个星期天12点运行。 在application-context.xml中,我对任务调度程序进行了如下配置: 问题cron表达式本身是:0 0 12?1/1太阳#1* 而是一个bean,它有一个名为的方法,当从单元测试运行时,该方法可以很好地

  • 从技术上讲,< code>cron、< code>crontab和< code>cronjob之间有什么区别? 从我能收集到的信息来看,是服务器上的实用程序,是一个包含时间间隔和命令的文件,是实际的命令(或包含命令的文件/脚本)。 这是正确的吗?

  • 当我做crontab-l时,我可以看到我所有的工作。 总之我可以只提取“表情”吗? 我需要这样的外出…

  • 问题内容: 我正在将算法从C移植到Go。我有些困惑。这是C函数: 在for循环中,将值s分配给元素cd数组x。这怎么可能?据我所知,长双精度数是float64(在Go上下文中)。因此,我不应该编译C代码,因为我正在向只包含uint64元素的数组分配一个long double。但是C代码可以正常工作。 那么有人可以解释为什么这行得通吗? 非常感谢你。 更新: 该函数的原始C代码可以在以下位置找到:h

  • 时间:2024.1.25 时长:30分钟 1、介绍实习做的项目 2、cookie和session的区别 3、cookie和session在多节点服务器上如何实现共享 4、对于cookie安全问题的解决方法 5、JWT了解过吗? 6、事务的控制方式,事务的传播行为 7、富文本的视频音频上传是怎么做的? 8、有用nginx做过静态代理吗? 9、操作日志记录的方法 10、AOP和IOC的区别 11、微服

  • 有什么方法可以重写panic功能来使用我们的记录器吗?