排序算法
主要关注常见的十种排序算法:
- 快速排序
- 冒泡排序
- 归并排序
- 插入排序
- 希尔排序
- 选择排序
- 堆排序
- 计数排序
- 桶排序
- 基数排序
测试用例
1 | import ( |
快速排序
思路
首先,设定一个基准值(第一个、最后一个或者随机一个值);
然后,根据基准值,把数据集合划分为两个部分,一个部分元素都大于基准值,一个部分元素都小于等于基准值;
然后,对划分的两个部分,递归进行1,2两步;
最后,直到数据集合元素小于等于1为止。
实现
1 | func QSort(items []int) { |
冒泡排序
思路
依次遍历数据集合的相邻的每对数据,如果第一个大于第二个,则交换它们的位置;
每次遍历数据集合,会确定一个最大值,因此,每次遍历会减少下一次遍历的集合数量;
遍历n次,即完成排序。
实现
1 | func BubbleSort(items []int) { |
归并排序
思路
- 把数据集合拆分为数量相当两个子集合(n/2和n-n/2)
- 分别对拆分后的子集合进行归并排序
- 合并已经排序好的两个子集合
实现
1 | func MergeSort(items []int) { |