曹耘豪的博客

Go的排序

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

引入

1
import "sort"

几个内置类型

都是从小到大

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

自定义排序

不稳定版本

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的位置
   /