我知道我们可以用
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]
}
问题内容: 问题:考虑以下float []: 我想要的是一个int []数组,它表示带有索引的原始数组的顺序。 当然,可以使用自定义比较器,一组自定义对象集或通过简单地对数组进行排序,然后在原始数组中搜索索引(关闭)来完成。 我实际上正在寻找的是Matlab的sort函数的第二个return参数的等效项。 是否有一种简单的方法(<5 LOC)?可能有不需要为每个元素分配新对象的解决方案吗? 更新:
假设我在R中有一个数组:在排序时,这将是: 在R中,从原始数组返回已排序数组元素的索引的最佳方法是什么。我正在寻找一个类似的输出:6(索引为2)、4(索引为3)、3(索引为4)、2(索引为7)、5(索引为8)、1(索引为10)
本文向大家介绍编写Golang程序以搜索排序数组中的元素,包括了编写Golang程序以搜索排序数组中的元素的使用技巧和注意事项,需要的朋友参考一下 解决这个问题的方法 步骤1:将数组从第0个索引迭代到n-1,其中n是给定数组的大小。 步骤2:声明low = 0th索引和high = n-1。启动一个for循环,直到低电平小于高电平为止。 步骤3:找到mid =(low + high)/ 2,如果中
问题内容: 就像标题听起来一样简单。我需要获取最后插入的项的索引/键。为什么这很难?请参见以下两个代码示例: 写道: 当然,这似乎可以正常工作,但请参见以下内容: 写道: 简而言之,流行的解决方法存在缺陷。 问题答案: 这是一个线性( 最快的 )解决方案:
我已经制作了一个包含字符串键和整数值的Hashmap。更具体地说,我从twitter API收集数据,并根据每个用户的关注者数量按降序对我的HashMap进行排序。 例如: @jeremy23:13.200追随者 @布兰登WW:10.343 @航空:6.002。。。 我想做的下一件事是制作一个一维数组,其中仅包含用户的姓名(但保持排序给我的顺序)。我的目标是制作一个包含最多以下人员的排名数组。我的
我真的被困在这件事上了,我很想得到你的帮助 我正在尝试编写一个带有签名的方法: 该方法以循环排序的二维数组和搜索num的值作为参数获取。如果值num在mat数组中,则该方法返回true。如果num值不在mat数组中,则该方法返回false。 如果第1季度的所有值都比第2季度的值小,第2季度的值比第3季度的值小,第3季度的值比第4季度的值小,那么该数组就是圆形的。 例如,以下数组是循环排序的: 如果