引言
有些时候在开发我们需要对我们自定义的结构体进行排序,完全手撸当然可以,但是有点浪费事件,借助go语言提供的sort包很容易实现这个需求。
简介
在sort包中主要有四个重要的文件
- sort :包含有插入排序、合并排序、堆排序、快排的实现
- slice :实现了对slice的适配
- search :实现了二分查找
- genzfunc :将sort包中的Interface接口替换为新的接口,文中会加以说明
Interface 接口 (sort.go)
一般来说,想要使用sort包中的方法,都需要满足Interface接口
- Len 返回长度
- Less 比较下标为
两个元素的大小
- Swap 交换两个元素
插入排序(sort.go)
插入比较简单,时间复杂度为
堆排序 (sort.go)
在
这个区间上生成一个最大堆,所以
是一个偏移量一样的概念,在比较的时候,需要加上
参数说明:
原始数组,
是根节点在
中的下标,
是区间最大长度
步骤:
- 标记根节点
- 进入循环
- 标记根节点的孩子节点
- 判断左孩子节点是否超出区间范围
- 判断右孩子节点是否超出区间范