我有
4, 5', 6, 5''
并希望将稳定排序反转为
6, 5', 5'', 4
但不是
6, 5'', 5', 4
此(无效)代码不起作用
keys := []int{4, 5', 6, 5''}
sort.Stable(sort.Reverse(sort.Ints(keys)))
它会产生:
6, 5'', 5', 4
在这里,问题被简化为整数切片,但实际上我需要将其应用于结构切片
type myStruct struct {
t time.Time
d time.Duration
}
并在t
现场进行反向稳定排序。
编辑:经过几句评论,我明确指出整数1是一个不起作用的示例,以简化问题。
sort.Interface
在您的自定义结构上实现接口。
type myStruct struct{
t time.Time
d time.Duration
}
type Slice []myStruct
func (s Slice) Len() int { return len(s) }
func (s Slice) Less(i, j int) bool {
return (s[i].t).After(s[j].t)
}
func (s Slice) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
在您的情况下,以下函数将基于以下顺序反向排序 t
func (s Slice) Less(i, j int) bool {
return (s[i].t).After(s[j].t)
}
(s[i].t).After(s[j].t)
报告是否s[i].t
在之后s[j].t
。
如果只想排序,请使用以下一项
func (s Slice) Less(i, j int) bool {
return (s[i].t).Before(s[j].t)
}
希望这会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句