A-A+

设A[100]是一个记录构成的数组 B[100]是一个整数数组 其值介于1~100 现要求按

2022-08-12 15:34:53 问答库 阅读 196 次

问题详情

设A[100]是一个记录构成的数组,B[100]是一个整数数组,其值介于1~100,现要求按B[100]的内容调整A中记录的次序,比如,当B[1]=11时,则要求将A[1]的内容调整到A[11]中去。规定可使用的附加空间为D(1)。


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:void CountSort(rectype A[]int B[])//A是100个记录的数组B是整型数组本算法利用数组B对A进行计数排序{int ijn=100;i=1:while(i<n){if(B[i]!=i)//若B[i]=i则A[i]正好在自己的位置上则不需要调整{j=i;while(B[j]! =i){k=B[j];B[j]=B[k];B[k]=k;//B[j]和B[k]交换rO=A[j];A[j]=A[k];A[k]:rI);}//rO是数组A的元素类型A[j]和A[k]交换i++;}//完成了一个小循环第i个已经安排好}//算法结束
此问题考查的知识点是线性结构的查找。题目要求按数组B内容调整数组A中记录的次序,可以从i=1开始,检查是否B[i]=i。如是,则A[i]恰为正确位置,不需再调;否则,B[i]=k≠i,则将A[i]和A[k]对调,B[i]和B[k]对调,直到B[i]=i为止。

考点:数组,整数