【答案解析】这是一个典型的以空间换时间的例子。为了加速计数排序的排序速度,增设一个整数计数数组,存放待排序数据的各自存放位置,然后对号入座。如下图所示为一个计数排序的例子。
Typedef int DataType;
void count_sort(DataType a[],DataType R[],intn){
int i,j;int count[n]; //count[n]存放各元素地址计数
for(i=0;i<n;i++) //count[n]初始化,计数值都为0
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++) //统计
if(a[j]<a[i])count[i]++;
else count[j]++;
for(i=0;i<n;i++)R[count[i]]=a[i]; //在R[]中各就各位
}
算法的排序码比较次数取决于代码中的二重循环,内层循环次数又取决于外层,有排序码比较次数=
