在golang中排序后获取数组的索引

我知道我们可以用

sort.Sort(sort.Reverse(sort.IntSlice(example)))

对数组进行排序。

但是如何获取数组的索引?

例如

example := []int{1, 25, 3, 5, 4}

我想得到输出:1、3、5、4、2

回答:

为此创建一个包装器,sort.IntSlice以记住索引并在交换值时交换它们:

type Slice struct {

sort.IntSlice

idx []int

}

func (s Slice) Swap(i, j int) {

s.IntSlice.Swap(i, j)

s.idx[i], s.idx[j] = s.idx[j], s.idx[i]

}

游乐场:http : //play.golang.org/p/LnSLfe-

fXk。

正如DaveC在评论中提到的那样,您实际上可以环绕sort.Interface以为任何可排序类型创建数据结构:

type Slice struct {

sort.Interface

idx []int

}

func (s Slice) Swap(i, j int) {

s.Interface.Swap(i, j)

s.idx[i], s.idx[j] = s.idx[j], s.idx[i]

}

以上是 在golang中排序后获取数组的索引 的全部内容, 来源链接: utcz.com/qa/426231.html

回到顶部