GO常用包学习笔记sort:排序相关(三)-创新互联

Package sort

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

创新互联是一家专注于成都网站设计、成都做网站与策划设计,黔西南州网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:黔西南州等地区。黔西南州做网站价格咨询:13518219792

 对基本类型的切片排序

 []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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:GO常用包学习笔记sort:排序相关(三)-创新互联
本文来源:http://scyanting.com/article/dhpjes.html