4776阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】下面的函数sort(intn,8640

阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的函数sort(int n,int a[])对保存在数组a中的整数序列进行非递减排序。由于该 序列中的元素在一定范围内重复取值,因此排序方法是先计算出每个元素出现的次数并 记录在数组b中,再从小到大顺序地排列各元素即可得到一个非递减有序序列。例如, 对于序列6,5,6,9,6,4,8,6,5,其元素在整数区间[4,9]内取值,因此使数组元素b[O]~b[5]的下标O~5分别对应数值4~9,顺序地扫描序列的每一个元素并累计其出现的次数,即将4的个数记入b[0],5的个数记入b[l],依此类推,9的个数记入b[5]。最后依 次判断数组b的每个元素值,并将相应个数的数值顺序地写入结果序列即可。 对于上例,所得数组b的各个元素值如下: 那么在输出序列中写入1个4、2个5、4个6、1个8、1个9,即得4,5,5,6,6,6,6,8,9, 从而完成排序处理。 【C函数】 void sort(int n,int a[]) (int *b; int i, k, number; int minimum=a[0], maximum=a 0]; /.minimum和maximum分别表示数组a的最小、最大元素值*/ For(i=1;i<n;i++) { if (_(1) ) minimum = a[j]; else if (_ (2) ) maximum = a[i]; } number = maximum - minimum + 1; if (number<=l) return; b = (int *) calloc (number, sizeod (int) ; if (!b) return; for(f=0;i<n,i++){/*计算数组a的每个元素值出现的次数并记入数组b*/ k= a[i] - minimum; ++b[k]; } /*按次序在数组a中写入排好的序列*/ l= (3) ; for(k=0; k<number; k++) for(; (4) ;一一b[k] ) a[i++】=minimum+ (5)’ ; } 请帮忙给出正确答案和分析,谢谢!

答案解析