/**
【题目】已知记录序列L.rcd[1..L.length]中的关键
字各不相同,可按如下所述实现计数排序:另设数组
c[1..n],对每个记录a[i], 统计序列中关键字比它
小的记录个数存于c[i],则c[i]=0的记录必为关键字
最小的记录,然后依c[i]值的大小对序列中记录进行
重新排列。试编写算法实现上述排序方法。
顺序表的类型RcdSqList定义如下:
typedef struct {
KeyType key;
…
} RcdType;
typedef struct {
RcdType rcd[MAXSIZE+1]; // rcd[0]闲置
int length;
} RcdSqList;
**/
void CountSort(RcdSqList &L)
/ 采用顺序表存储结构,在函数内自行定义计数数组c /
{
int i,j;
RcdSqList L1;
int c[27];
for(i=1;i<=L.length;i++){
for(j=1;j<=L.length;j++){
if(L.rcd[i].key<L.rcd[j].key){
c[i]++;
}
}
}
for(i=1;i<=L.length;i++){
L1.rcd[c[i]+1].key=L.rcd[i].key;
}
for(i=1;i<=L.length;i++){
L.rcd[L.length-i+1].key=L1.rcd[i].key;
}
}