项目:学习并安装计数排序算法

频道:计算机技能 日期: 浏览:89

项目名称:学习计数排序算法

一、项目意义

其中SAC COUNT - 排序缩短了算法实现过程的时间,算法设置相当简单,适用性很强,
所以想和大家分享一下。 理解和学习算法的过程。

2.地图内容:

一。

了解算法及其重要性。

计算设置、分析和应用。

b.

计数排序是一种通过建立整数值统计表的排序算法

C。 描述要解决的方法/算法。

– 构建数组 dd[i],dd[i] 为整数 i 出现的次数。

– 称 GTMAX 为待排序整数的最大值,N 为待排序元素的个数。

步骤1:dd[i]=0,i=0..GTMAX。

步骤2:浏览要排序的数字,统计每个值为i的数字:dd[i]=dd[i]+1;

第三步:完成,并根据需要使用。

算法复杂度:O(max(GTMAX, N))

d. 设置/代码
image.png
上面的代码只处理小于10^6的正整数,但是如果要对负数进行排序,也可以按照上面的标记思路进行操作,
不过C++好像不支持访问数组具有负索引,因此我们可以创建额外的数组来标记负数,
并从计数中过滤掉负数和正数的两个数组。

image.png
样品测试:
image.png

e. 评估优缺点并进行比较:

缺点:

– 只能对整数进行排序。

– 必须知道整数的取值范围。

– 大于10^7的值范围将无法创建dd数组进行存储。

优势:

– 安装简单。

– 算法复杂度取决于值域。

比较:

示例1:

– 假设要排序的元素数量为10^6,最大元素值为10^9

因此,根据数据的大小,我们选择合适的排序算法

F。 检测结果

例如:

步骤一:初始化dd数组


DD 0 1 2 3 4 5 6 7 8

我 0 0 0 0 0 0 0 0 0

第2步:


DD 0 1 2 3 4 5 6 7 8

我 0 1 0 0 0 0 0 0 0

步骤3:


DD 0 1 2 3 4 5 6 7 8

我 0 1 0 0 1 0 0 0 0

步骤4:


DD 0 1 2 3 4 5 6 7 8

我 0 1 1 0 1 0 0 0 0

第5步:


DD 0 1 2 3 4 5 6 7 8

我 0 1 1 0 1 0 0 1 0

第6步:


DD 0 1 2 3 4 5 6 7 8

我 0 1 1 0 1 0 0 1 1

第7步:


DD 0 1 2 3 4 5 6 7 8

我 0 1 2 0 1 0 0 1 1

步骤8:


DD 0 1 2 3 4 5 6 7 8

我 0 2 2 0 1 0 0 1 1

第9步:


DD 0 1 2 3 4 5 6 7 8

我 0 2 2 1 1 0 0 1 1

第10步:


DD 0 1 2 3 4 5 6 7 8

我 0 2 2 1 1 0 0 1 2

第11步:


DD 0 1 2 3 4 5 6 7 8

我 0 2 2 1 1 0 1 1 2

步骤12:


DD 0 1 2 3 4 5 6 7 8

我 0 2 3 1 1 0 1 1 2

所以排序后的结果是:1,1,2,2,2,3,4,6,7,8,8。




评论留言

暂时没有留言!

我要留言