排序算法(三)

不羁岁月 提交于 2020-03-09 18:13:30

1.计数排序

核心思想:

对于输入的数据x存入标记为x的数组中,并统计x的个数。
适用于数据范围小,数据量大的情况。
算法的步骤如下:
1.找出待排序的数组中最大和最小的元素
2.统计数组中每个值为i的元素出现的次数,存入数组C的第i项
3.对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)
4.反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个 元素就将C(i)减去1
文章

2.基数排序

核心思想

分配+收集
基数排序又称为“桶子法”,从低位开始将待排序的数按照这一位的值放到相应的编号为0~9的桶中。等到低位排完得到一个子序列,再将这个序列按照次低位的大小进入相应的桶中,一直排到最高位为止,数组排序完成。
算法执行步骤:
(1)遍历序列找出最大的数(为的是确定最大的数是几位数);
(2)开辟一个与数组大小相同的临时数组tmp;
(3)用一个count数组统计原数组中某一位(从低位向高位统计)相同的数据出现的次数;
(4)用一个start数组计算原数组中某一位(从最低位向最高位计算)相同数据出现的位置;
(5)将桶中数据从小到大用tmp数组收集起来;
(6)重复(3)(4)(5)直到所有位都被统计并计算过,用tmp收集起来;
(7)将tmp数组拷回到原数组中;
文章

3.桶排序

核心思想:

将数据划分多个范围相同的区间,每个区间排序,最后合并。
文章

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!