排序(归并、桶排、基数排序、计数排序)

本部分内容包括:归并、桶排、基数排序、计数排序

代码实现

        见我的github:排序(归并、桶排、基数排序、计数排序)

一、归并排序

        设计思路

 1、数组分成两段,每段去排序

 2、排序时判断这两段是否越界,越界停止返回

排序(归并、桶排、基数排序、计数排序)_第1张图片

 3、实行归并

排序(归并、桶排、基数排序、计数排序)_第2张图片

        注意事项:灌装数组的时候,需要注意temp数组的起始位置。

二、桶排序

        设计思路

        注意事项

三、基数排序

        设计思路

        注意事项

四、计数排序

        设计思路:两个数组,一个是原始数组,另外一个是统计数组(在一次循环内统计原始数组中每个数出现的次数)。

1、找出原始数组的最大最小值

排序(归并、桶排、基数排序、计数排序)_第3张图片

2、定义新的数组大小  min到max之间,闭区间,有(max-min+1)个数字

3、一次循环统计数据——优化掉最小值之前的无用存储

4、返回新数组

4.1、优化前方案——两次循环,需判空,浪费循环次数

排序(归并、桶排、基数排序、计数排序)_第4张图片

4.2、优化后方案

排序(归并、桶排、基数排序、计数排序)_第5张图片

        注意事项:数组内的元素跨度大,不适合使用计数排序。

你可能感兴趣的:(算法及其应用,算法工程师进阶之路)