golang 使用 sort 來排序

2021-08-28 13:52:55 字數 1967 閱讀 5354

golang sort package: 

sort 操作的物件通常是乙個 slice,需要滿足三個基本的介面,並且能夠使用整數來索引

// a type, typically a collection, that satisfies sort.inte***ce can be 

// sorted by the routines in this package. the methods require that the

// elements of the collection be enumerated by an integer index.

type inte***ce inte***ce

ex-1 對 int 從小到大排序

package main

import (

"fmt"

"sort"

)type intslice int

func (s intslice) len() int

func (s intslice) swap(i, j int)

func (s intslice) less(i, j int) bool

func main()

sort.sort(intslice(a))

fmt.println("after sorted: ", a)

}

ex-2 使用 sort.ints 和 sort.strings

golang 對常見的 int 和 string 分別定義了 intslice 和 stringslice, 實現了各自的排序介面。而 sort.ints 和 sort.strings 可以直接對 int 和 string 進行排序, 使用起來非常方便

package main

import (

"fmt"

"sort"

)func main()

sort.ints(a)

fmt.println(a)

ss := string

sort.strings(ss)

fmt.println(ss)

sort.sort(sort.reverse(sort.stringslice(ss)))

fmt.printf("after reverse: %v\n", ss)

}

ex-3 使用 sort.reverse 進行逆序排序

如果我們想對乙個 sortable object 進行逆序排序,可以自定義乙個type。但 sort.reverse 幫你省掉了這些**

package main

import (

"fmt"

"sort"

)func main()

sort.sort(sort.reverse(sort.intslice(a)))

fmt.println("after reversed: ", a)

}

ex-4 使用 sort.stable 進行穩定排序

sort.sort 並不保證排序的穩定性。如果有需要, 可以使用 sort.stable

package main

import (

"fmt"

"sort"

)type person struct

type personslice person

func (s personslice) len() int

func (s personslice) swap(i, j int)

func (s personslice) less(i, j int) bool

func main() ,,,

,,

}sort.stable(a)

fmt.println(a)

}

golang 使用 sort 來排序

golang 使用 sort 來排序 golang sort package sort 操作的物件通常是乙個 slice,需要滿足三個基本的介面,並且能夠使用整數來索引 a type,typically a collection,that satisfies sort.inte ce can be ...

Golang使用sort介面實現排序

為實現對自定義的struct進行排序,可以呼叫sort包中的sort方法,為此,自定義的struct集合需要實現len less swap 三項方法。官方文件中的描述為 func sort data inte ce sort排序data。它呼叫1次data.len確定長度,呼叫o n log n 次...

golang基礎 排序sort

基本型別 int float64 string 的排序 int float64 string排序 intlist int float8list float64 stringlist string sort.ints intlist sort.float64s float8list sort.stri...