试题四(共15 分)
阅读下列说明和C代码,回答问题 1 至问题3,将解答写在答题纸的对应栏内。
【说明】
某应用中需要对100000 个整数元素进行排序,每个元素的取值在 0~5 之间。排序算法的基本思想是:对每一个元素 x,确定小于等于 x的元素个数(记为m),将 x放在输出元素序列的第m 个位置。对于元素值重复的情况,依次放入第 m-l、m-2、…个位置。例如,如果元素值小于等于4 的元素个数有 10 个,其中元素值等于 4 的元素个数有3个,则 4 应该在输出元素序列的第10 个位置、第 9 个位置和第8 个位置上。
算法具体的步骤为:
步骤1:统计每个元素值的个数。
步骤2:统计小于等于每个元素值的个数。
步骤3:将输入元素序列中的每个元素放入有序的输出元素序列。
【C代码】
下面是该排序算法的C语言实现。
(1)常量和变量说明
R:常量,定义元素取值范围中的取值个数,如上述应用中 R值应取6i:循环变量
n:待排序元素个数
a:输入数组,长度为n
b:输出数组,长度为n
c:辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。
(2)函数sort
1 void sort(int n,int a[ ],intb[ ]){
2 int c[R],i;
3 for (i=0;i< (1) ;i++){
4 c[i]=0;
5 }
6 for(i=0;i<n;i++){
7 c[a[i]] = (2) ;
8 }
9 for(i=1;i<R;i++){
10 c[i]= (3) ;
11 }
12 for(i=0;i<n;i++){
13 b[c[a[i]]-1]= (4) ;
14 c[a[i]]=c[a[i] ]-1;
15 }
16 }
【问题1】(8 分)
根据说明和C代码,填充 C代码中的空缺(1)~(4)。
【问题2】(4 分)
根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) (用 O符号
表示)。
【问题3】(3 分)
根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过 100 字);
若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
从下列的2 道试题(试题五和试题六)中任选 1 道解答。
如果解答的试题数超过 道,则题号小的 道解答有效。
00****02 试题四分析本
32732011年3月30日,国务院常务会议
【填空题】 对重要事项或者重大行动作出安排,
根据《中华人民共和国档案法》,坚持中国共产党
(单选题)下面哪些不算是冲突()
我们不能以是否存在差别和差别的大小为标准来判
以下对三民主义评价不正确的是( )A.三民主
习近平表示:“实现中国梦必须走中国道路,必须
我们在历史课堂学习我国原始农耕文明的时候,提
武士阶级对近代日本社会产生了重大影响。阅读下
(单选题) 上游来水CODcr(P)=16.
工作流程图反映了一个组织系统中各项工作之间的
塑料护套线直敷布线技术要求,说法错误的是(
镦粗是的每次压缩量应小于材料塑性形变允许的范
美国心理学家孟禄认为,模仿心理是教育的基础,
报在长期使用过程中,形成了约定俗成的格式,一
采用高压喷射注浆法施工后常采用()方法进行检
经测定气瓶残余容积变形率达到了15%,该气瓶
某地酿酒厂要建一小型污水处理厂,需开挖1.5
链斗式挖泥船适于施工的自然环境条件为( )。
大量的墓室和墓葬