GO常用包学习笔记 sort:排序相关(三)
admin
2023-07-30 09:42:16
0

Package sort

对数组切片进行排序操作;判断是否已正序排序;使用二分法从切片中查找一个元素(要先正序排序)。

 

 对基本类型的切片排序

 []float64[]int[]string的排序(递增),判断可以直接使用以下六个方法

func Float64s(a []float64)

func Ints(a []int)

func Strings(a []string)

func Float64sAreSorted(a []float64) bool

func IntsAreSorted(a []int) bool

func StringsAreSorted(a []string) bool

以上6个方法都是间接通过排序接口"Interface"进行排序的

 

通过实现Interface接口对自定义类型的数组切片进行排序

需实现接口的三个方法

  Len() int //长度

  Less(i, j int) bool //比较

  Swap(i, j int)  //交换

  

 满足接口的集合就可以使用以下四个方法

 

 

func Sort(data Interface)  //排序 不保证相等的元素排序前后的顺序

func IsSorted(data Interface) bool //判断是否正序

func Stable(data Interface) //排序 保证相等的元素排序前后的顺序

func Reverse(data Interface) Interface //(排序前)修改排序接口的比大小方法

基本类型的排序就是通过如下三个实现了Interface接口的对象来实现的  

 type Float64Slice    //type Float64Slice []float64

    func (p Float64Slice) Len() int

    func (p Float64Slice) Less(i, j int) bool

    func (p Float64Slice) Search(x float64) int

    func (p Float64Slice) Sort()

    func (p Float64Slice) Swap(i, j int)

type IntSlice

    func (p IntSlice) Len() int

    func (p IntSlice) Less(i, j int) bool

    func (p IntSlice) Search(x int) int

    func (p IntSlice) Sort()

    func (p IntSlice) Swap(i, j int)

type StringSlice

    func (p StringSlice) Len() int

    func (p StringSlice) Less(i, j int) bool

    func (p StringSlice) Search(x string) int

    func (p StringSlice) Sort()

    func (p StringSlice) Swap(i, j int)

 

 上面几个Search方法(二分法,要先递增排序才能用)通过下面三个方法实现 

func SearchFloat64s(a []float64, x float64) int

func SearchInts(a []int, x int) int

func SearchStrings(a []string, x string) int

 而这三个方法调用了Search方法

func Search(n int, f func(int) bool) int  //二分法

 

 

Go1.8新增的排序方法

func Slice(slice interface{}, less func(i, j int) bool)  //排序 不保证相同的元素的次序

func SliceStable(slice interface{}, less func(i, j int) bool)//排序 保证排序后相同的元素的先后顺序不变

func SliceIsSorted(slice interface{}, less func(i, j int) bool) bool //是否为正序排列

入参slice必须是一个数组切片,否则发生panic

 

 

 

 

 

 

 

 


相关内容

热门资讯

委内瑞拉地震死亡人数升至334... 当地时间7月5日,委内瑞拉全国代表大会主席豪尔赫·罗德里格斯表示,该国日前发生的地震造成的死亡人数上...
这位夸赞中国的女人,正在“大闹... 一个民调支持率极高的女人正在大闹德国,她就是选择党(AfD)党首爱丽丝·魏德尔。让欧洲建制派恐惧的是...
特朗普政府发布两项量子与密码安... 2026年6月22日,白宫发布《Ushering in the Next Frontier of Q...
原创 神... 三百多公里之上,一间比小户型客厅还局促的舱段里,一位女性和两位男性要抬头不见低头见地过日子。外界最容...
玩转昼夜交替科学实验 市科技馆... 7月4日市科技馆联合日报社小记者团,开展昼夜交替科学模型制作科普实践活动,帮助同学们在动手实操中了解...
靠谱大容量TF卡推荐:三星T7... Switch一代仍在发光发热,游戏阵容庞大、生态成熟,但32GB(OLED版64GB)的机身存储,早...
蒋方舟的学术不规范和论文造假有... 中国人民大学刚刚发布情况通报,公布了近日沸沸扬扬的“蒋方舟硕士论文涉嫌学术不端”事件调查和处理结果:...
四川绵竹接连发生3次四级以上地... 中国地震台网正式测定:今日23时30分在四川德阳市绵竹市(北纬31.58度,东经104.00度)发生...
大神Karpathy用Clau... 编辑|泽南、杨文 上班真是有毒啊。 连 Andrej Karpathy(安德烈・卡帕西)这样的 AI...
我国成功发射千帆极轨13组卫星 7月4日 据央视新闻 北京时间7月4日17时30分,我国在太原卫星发射中心使用长征六号改运载火箭,成...