1. 排序要求

要求4:切片之间的排序按照索引从小到大依次比较,小的排在前面,如果索引相同的情况下数值相同,则比较下一个索引。

举例,排序/输出结果应该是这样的: [[10,10,60],[10,20,50],[10,70],[20,60]]

2. 代码

实现:func Slice(x interface{}, less func(i, j int) bool)

 代码如下:

package main

import (
	"fmt"
	"sort"
)
func main() {
	ans := [][]int{
		{10,70},
		{20,60},
		{10,20,50},
		{10,10,60},
	}
	sort.Slice(ans, func(i, j int) bool {
		n1,n2 := len(ans[i]),len(ans[j])
		minLen := min(n1,n2)
		k := 0
		for ;k<minLen;k++{
			if ans[i][k] != ans[j][k] {
				return ans[i][k] < ans[j][k]
			}
		}
		if minLen == n1 {
			return i<j
		}
		return j<i
	})
	fmt.Println(ans)
}

func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}

运行结果:[[10 10 60] [10 20 50] [10 70] [20 60]]

 说明:只是一个简单实现,没有深究,仅供参考。代码跑通后随手记了一下。