稳定排序(sort+结构体)

引用块内容这里写图片描述
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sort.SliceStable(s) 是 Go 语言中的一个函数,用于对切片进行稳定排序。它与 sort.Slice(s) 的不同之处在于,它保留了相等元素之间的原始顺序。 下面是一个示例代码,演示了如何使用 sort.SliceStable(s) 对一个结构体切片进行稳定排序: ```go package main import ( "fmt" "sort" ) type Person struct { Name string Age int } func main() { people := []Person{ {"Alice", 25}, {"Bob", 30}, {"Charlie", 25}, {"David", 20}, } sort.SliceStable(people, func(i, j int) bool { if people[i].Age == people[j].Age { return people[i].Name < people[j].Name } return people[i].Age < people[j].Age }) fmt.Println(people) } ``` 输出结果为: ``` [{David 20} {Alice 25} {Charlie 25} {Bob 30}] ``` 在这个示例中,我们定义了一个结构体切片 people,其中每个元素都包一个人的姓名和年龄。我们使用 sort.SliceStable(people) 函数对它进行排序。我们传递了一个 less 函数,这个函数接受两个参数 i 和 j,表示两个元素在切片中的位置。函数的返回值表示第 i 个元素是否应该排在第 j 个元素的前面。在这个示例中,我们使用人的年龄来定义元素之间的比较方式。如果两个人的年龄相同,则按照姓名的字典序来排序。 需要注意的是,sort.SliceStable(s) 函数同样会直接修改原始切片 s,而不是返回一个新的排序后的切片。因此,我们在排序之前最好先对原始切片进行备份,以免出现无法预料的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值