美文网首页
golang 二维切片排序

golang 二维切片排序

作者: Flag丶 | 来源:发表于2020-03-16 14:44 被阅读0次
package main

import (
"fmt"
"sort"
)

//type value []string
type value [][]int

func (p value) Len() int {
return len(p)
}

// 二维切片排序
func (p value) Less(i, j int) bool {
    for k := 0; k < len(p[i]); k++ {
        if len(p[j]) == 0 || p[j] == nil { // 长度为空时
          return true
        }
      fmt.Println(p, i, j, k)
        if p[i][k] > p[j][k] { // < 则正序
            return true
        } else if p[i][k] == p[j][k] {
          if len(p[j]) == k+1 { //前序相同但长度不同的情况
            return true
          }
        continue
        } else {
          return false
        }
    }
return true
}

func (p value) Swap(i, j int) {
    p[i], p[j] = p[j], p[i]
}

func main() {
    var v value
    v = [][]int{
        {1, 2, 5, 6, 7, 8},
        {2},
        {},
        {4, 5, 6},
        {3, 3, 5, 6, 7, 9},
        {2, 3, 5, 6, 7, 9},
        {4, 3, 5, 6, 7, 9},
    }
    sort.Sort(v)
    fmt.Println(v)
}

相关文章

  • golang 二维切片排序

  • golang排序二维切片

    排序二维切片,思路算是比较明确,但是中间由于某些细节没有处理好,导致调试了很久才写出正确的版本。 出现失误的地方在...

  • golang-101-hacks(13)——二维切片

    注:本文是对golang-101-hacks中文翻译。Go支持多维切片,再此只对二维切片切片做介绍。日常生活中通常...

  • Golang二维切片初始化

    Golang二维切片初始化 引言 之前,刷Leetcode的时候,有些题需要初始化二维数组,而一维数组的初始化,比...

  • golang sort.Slice

    sort.Slice是golang提供的切片排序方法, 其中使用到了反射(reflect)包 使用了闭包 可以参考...

  • the way to go:练习7.11和练习7.12

    golang学习,切片操作。 运行结果

  • Golang:切片

    切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构。切片并不存储任何元素而只是对现有数组的引用。...

  • golang切片

    定义 slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 使用方式 切片:切...

  • golang切片

    切片是对数组的抽象 slice 总是指向底层的一个 array。 slice 是一个指向 array 的指针,这是...

  • Golang:切片

    切片 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。非常灵活,支持自动扩...

网友评论

      本文标题:golang 二维切片排序

      本文链接:https://www.haomeiwen.com/subject/fdmgehtx.html