最近碰上了一个需求,要得到排序后的原索引序列。

我又不希望自己重新实现一快排出来,所以在接口上重新封装了一下。

package main

import (
"fmt"
"sort"
) type SortIndexs struct {
sort.IntSlice // 可以替换成其他实现了 sort.Interface
indexs []int
} func (p *SortIndexs) Swap(i, j int) {
p.IntSlice.Swap(i, j)
p.indexs[i], p.indexs[j] = p.indexs[j], p.indexs[i]
} func NewSortIndexs(arr []int) *SortIndexs {
s := &SortIndexs{IntSlice: sort.IntSlice(arr), indexs: make([]int, len(arr))}
for i := range s.indexs {
s.indexs[i] = i // 原有排序 indexs
}
return s
} func main() {
s := NewSortIndexs([]int{5,8,10,2,9,6})
sort.Sort(s)
fmt.Println(s.indexs)
fmt.Println(s.IntSlice)
}

输出

[3 0 5 1 4 2]
[2 5 6 8 9 10]

最新文章

  1. INF文件的安装/卸载命令
  2. 关于antlr包删除问题
  3. C#中的bitmap类和图像像素值获取方法
  4. The web application [/codeMarket] registered the JBDC driver[.........] but failed to unregister it when the web application was stopped. To prevent
  5. 用VMware 11.0虚拟机安装Win8 系统失败,提示“shsucdx can't install”
  6. mybatis和model关联
  7. [ CodeVS冲杯之路 ] P1368
  8. 32. Longest Valid Parentheses
  9. java中的拷贝文件FileChannel
  10. Ubuntu 安装vim出错
  11. 实现DataGridView和DevExpress.GridControl表头全选功能
  12. HttpClient(联网)
  13. 5、sha1加密的一个坑
  14. 【Espruino】NO.12 加速度传感器演示
  15. HDU 4768 Flyer (2013长春网络赛1010题,二分)
  16. 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等) (转载)
  17. 【Docker】安装并测试安装成功
  18. 虚拟化技术:Xen与KVM的对比
  19. 用eclipse查看JDK源代码
  20. Trapping Rain Water——经典的双边扫描问题

热门文章

  1. linux===给新手的 10 个有用 Linux 命令行技巧(转)
  2. linux内核网络接收数据流程图【转】
  3. OpenRCT2
  4. f1 f12热键关闭
  5. 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到SUSE Linux Enterprise Server 12 SP2 64 位(GNOME 版本3.20.2)
  6. Javascript备忘录-枚举一个对象的所有属
  7. bzoj 1407 扩展欧几里德
  8. 二分查找(BinarySearch)
  9. python 重新执行循环中出错的那一次
  10. oracle10g中判断字段是否为空的坑