本部分内容包括:归并、桶排、基数排序、计数排序
代码实现:
见我的github:排序(归并、桶排、基数排序、计数排序)
一、归并排序
设计思路
1、数组分成两段,每段去排序
2、排序时判断这两段是否越界,越界停止返回
3、实行归并
注意事项:灌装数组的时候,需要注意temp数组的起始位置。
二、桶排序
设计思路
注意事项
三、基数排序
设计思路
注意事项
四、计数排序
设计思路:两个数组,一个是原始数组,另外一个是统计数组(在一次循环内统计原始数组中每个数出现的次数)。
1、找出原始数组的最大最小值
2、定义新的数组大小 min到max之间,闭区间,有(max-min+1)个数字
3、一次循环统计数据——优化掉最小值之前的无用存储
4、返回新数组
4.1、优化前方案——两次循环,需判空,浪费循环次数
4.2、优化后方案
注意事项:数组内的元素跨度大,不适合使用计数排序。