曹耘豪的博客

Go的排序

  1. 引入
  2. 几个内置类型
  3. 自定义排序
  4. Search:二分查找
  5. 参考

引入

1
import "sort"

几个内置类型

都是从小到大

1
2
3
sort.Ints()
sort.Float64()
sort.Strings()

反向

1
2
3
s := []int{5, 2, 6, 3, 1, 4} // unsorted
sort.Sort(sort.Reverse(sort.IntSlice(s)))
fmt.Println(s)

自定义排序

不稳定版本

1
2
3
4
sort.Slice(arr, func(a, b int) bool {
v1, v2 := list[a], list[b]
return v1 < v2 // 从小到大排序
})

稳定版本

1
2
3
4
sort.SliceStable(arr, func(a, b int) bool {
v1, v2 := list[a], list[b]
return v1 < v2 // 从小到大排序
})

Search:二分查找

返回第一个满足的索引

1
2
3
4
5
6
7
arr := []int{1, 2, 3, 4, 5}

idx := sort.Search(len(arr), func (i int) bool {
return arr[i] > 2
})

fmt.Println(idx) // 2,3的位置

参考

   /