万户做网站如何,网站人多怎么优化,wordpress页面 跳转,免费下载应用市场任务要求参考答案问答98
任务描述相关知识 基数排序算法编程要求测试说明 任务描述
本关任务#xff1a;实现基数排序算法#xff0c;并将乱序数列变成升序。
相关知识
为了完成本关任务#xff0c;你需要掌握#xff1a;1.基数排序算法。
基数排序算法
基数排序是按…
任务要求参考答案问答98
任务描述相关知识 基数排序算法编程要求测试说明 任务描述
本关任务实现基数排序算法并将乱序数列变成升序。
相关知识
为了完成本关任务你需要掌握1.基数排序算法。
基数排序算法
基数排序是按照低位先排序然后收集再按照高位排序然后再收集依次类推直到最高位。有时候有些属性是有优先级顺序的先按低优先级排序再按高优先级排序。最后的次序就是高优先级高的在前高优先级相同的低优先级高的在前。
算法步骤 取得数组中的最大数并取得位数 arr为原始数组从最低位开始取每个位组成radix数组 对radix进行计数排序利用计数排序适用于小范围数的特点 编程要求
本关的编程任务是补全右侧代码片段sort_array中Begin至End中间的代码具体要求如下
在sort_array中实现基数排序算法并返回升序的数组。
测试说明
平台将自动编译补全后的代码并生成若干组测试数据接着根据程序的输出判断程序是否正确。
以下是平台的测试样例
测试输入 10 7 1 4 6 8 9 5 2 3 10 预期输出 1 2 3 4 5 6 7 8 9 10
测试输入 15 3 44 38 5 47 15 36 26 27 2 46 4 19 50 48 预期输出 2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
//
#include sort_.h
void print_array(int *arr, int n)
// 打印数组
{if(n0){printf(ERROR: Array length is ZERO\n);return;}printf(%d, arr[0]);for (int i1; in; i) {printf( %d, arr[i]);}printf(\n);
}
int* sort_array(int *arr, int n)
// 编程实现《基数排序算法》
// 函数参数乱序整数数组 数组长度
// 函数返回值返回从小到大排序后的数组
{// 请在这里补充代码完成本关任务/********** Begin *********/int i;int maxValue arr[0];for (i 1; i n; i) {if (arr[i] maxValue) {maxValue arr[i]; // 输入数据的最大值}}const int radixCnt 10;vectorint radixs[radixCnt];int maxDigit 0;while (maxValue) {maxValue / 10;maxDigit;}for (int i0, dev1; imaxDigit; i, dev*10) {for (int j0; jradixCnt; j) {radixs[j].clear();} for (int j0; jn; j) {int digit (arr[j]/dev)%10;radixs[digit].push_back(arr[j]);} for (int j0, t0; jradixCnt; j) {for (int k0; kint(radixs[j].size()); k) {arr[t] radixs[j][k];} } } return arr;/********** End **********/
}