您好,登錄后才能下訂單哦!
對(duì)數(shù)組切片進(jìn)行排序操作;判斷是否已正序排序;使用二分法從切片中查找一個(gè)元素(要先正序排序)。
對(duì)基本類(lèi)型的切片排序
[]float64,[]int,[]string的排序(遞增),判斷可以直接使用以下六個(gè)方法
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個(gè)方法都是間接通過(guò)排序接口"Interface"進(jìn)行排序的
通過(guò)實(shí)現(xiàn)Interface接口對(duì)自定義類(lèi)型的數(shù)組切片進(jìn)行排序
需實(shí)現(xiàn)接口的三個(gè)方法
Len() int //長(zhǎng)度
Less(i, j int) bool //比較
Swap(i, j int) //交換
滿足接口的集合就可以使用以下四個(gè)方法
func Sort(data Interface) //排序 不保證相等的元素排序前后的順序
func IsSorted(data Interface) bool //判斷是否正序
func Stable(data Interface) //排序 保證相等的元素排序前后的順序
func Reverse(data Interface) Interface //(排序前)修改排序接口的比大小方法
基本類(lèi)型的排序就是通過(guò)如下三個(gè)實(shí)現(xiàn)了Interface接口的對(duì)象來(lái)實(shí)現(xiàn)的
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)
上面幾個(gè)Search方法(二分法,要先遞增排序才能用)通過(guò)下面三個(gè)方法實(shí)現(xiàn)
func SearchFloat64s(a []float64, x float64) int
func SearchInts(a []int, x int) int
func SearchStrings(a []string, x string) int
而這三個(gè)方法調(diào)用了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 //是否為正序排列
入?yún)?/span>slice必須是一個(gè)數(shù)組切片,否則發(fā)生panic
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。