go排序后索引
2024-10-18 18:22:33
最近碰上了一个需求,要得到排序后的原索引序列。
我又不希望自己重新实现一快排出来,所以在接口上重新封装了一下。
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]
最新文章
- INF文件的安装/卸载命令
- 关于antlr包删除问题
- C#中的bitmap类和图像像素值获取方法
- The web application [/codeMarket] registered the JBDC driver[.........] but failed to unregister it when the web application was stopped. To prevent
- 用VMware 11.0虚拟机安装Win8 系统失败,提示“shsucdx can't install”
- mybatis和model关联
- [ CodeVS冲杯之路 ] P1368
- 32. Longest Valid Parentheses
- java中的拷贝文件FileChannel
- Ubuntu 安装vim出错
- 实现DataGridView和DevExpress.GridControl表头全选功能
- HttpClient(联网)
- 5、sha1加密的一个坑
- 【Espruino】NO.12 加速度传感器演示
- HDU 4768 Flyer (2013长春网络赛1010题,二分)
- 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等) (转载)
- 【Docker】安装并测试安装成功
- 虚拟化技术:Xen与KVM的对比
- 用eclipse查看JDK源代码
- Trapping Rain Water——经典的双边扫描问题
热门文章
- linux===给新手的 10 个有用 Linux 命令行技巧(转)
- linux内核网络接收数据流程图【转】
- OpenRCT2
- f1 f12热键关闭
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到SUSE Linux Enterprise Server 12 SP2 64 位(GNOME 版本3.20.2)
- Javascript备忘录-枚举一个对象的所有属
- bzoj 1407 扩展欧几里德
- 二分查找(BinarySearch)
- python 重新执行循环中出错的那一次
- oracle10g中判断字段是否为空的坑