golang: 使用 sort 來排序
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 package sort 操作的物件通常是乙個 slice,需要滿足三個基本的介面,並且能夠使用整數來索引 a type,typically a collection,that satisfies sort.inte ce can be sorted by the routi...
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...