码迷,mamicode.com
首页 > 编程语言 > 详细

Go语言golang调用sort.Slice实现struct切片的快速排序

时间:2019-12-31 12:49:52      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:quic   元素   声明   class   bool   排序   一个   参数   int   

sort.Slice声明

func Slice(slice interface{}, less func(i, j int) bool) {
    rv := reflectValueOf(slice)
    swap := reflectSwapper(slice)
    length := rv.Len()
    quickSort_func(lessSwap{less, swap}, 0, length, maxDepth(length))
}

实际使用

和C++的sort模板类似,只需要实现less函数,Go特别的是传入的函数不是直接传入less,而是一个匿名函数,匿名函数的参数是两个下标,表示两个比较元素在切片中的下标

type Person struct {
    h int
    k int
}

func PersonLess(p Person, other Person) bool{
    if p.h > other.h {
        return true
    } else if p.h < other.h {
        return false
    } else {
        return p.k <= other.k
    }
}

func reconstructQueue(people [][]int) [][]int {
    personSlice := NewPersonSlice(people)
    sort.Slice(personSlice, func(i, j int) bool {
        return PersonLess(personSlice[i], personSlice[j])
    })
}

Go语言golang调用sort.Slice实现struct切片的快速排序

标签:quic   元素   声明   class   bool   排序   一个   参数   int   

原文地址:https://www.cnblogs.com/roastpiglet/p/12123524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!