美文网首页
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 二维切片排序

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