Jef*_*ong 4 sorting indexing int go
如何按每个int的第一个数字对一片int进行排序?
我正在尝试编写自己的自定义排序:
type ByFirstDigit []int
func (s ByFirstDigit) Len() int {
return len(s)
}
func (s ByFirstDigit) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s ByFirstDigit) Less(i, j int) bool {
return s[i][0] < s[j][0]
}
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
s [j] [0](int类型不支持索引)
@RayfenWindspear具有最容易使用和阅读的答案,但对于性能影响是正确的.如果性能比可维护性更重要,您可以使用迭代除法来做同样的事情来获得最重要的基数为10的数字:
var i int
for i = n; i >= 10; i = i / 10 {}
// i == most significant digit
Run Code Online (Sandbox Code Playgroud)
请注意,i在循环找到最重要的数字后,您必须在循环外部声明才能使用它.我还会使用您自己的数据集进行基准测试,以了解在您的特定情况下真正的性能影响.