要求4:切片之间的排序按照索引从小到大依次比较,小的排在前面,如果索引相同的情况下数值相同,则比较下一个索引。
2. 代码举例,排序/输出结果应该是这样的: [[10,10,60],[10,20,50],[10,70],[20,60]]
实现: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]]
说明:只是一个简单实现,没有深究,仅供参考。代码跑通后随手记了一下。