王道数据结构最后一页的思考题,对一个最大值不超过65535的序列排序,可以用一个数组a来记录,从i=0一直到max(我这里设为50)遍历,如果待排序数组 i 存在,则a[i]++;
一句话,用 a[ ] 数组中的位置的值来表示待排数组 L[ ] 的值,再输出 a[ ]
#include <stdio.h>
#define MAX 50
void sort(int *L,int length)
{
int a[MAX]={0};
int i,k;
for(i=0;i<length;i++)
{
k=L[i]; //如果待排数组中存在i,就将a[]相应位置的值赋1
a[k]++;
}
for(i=0;i<MAX;i++) //顺序输出a[i]
{
if(a[i])
{
printf("%d ",i);
}
}
}
int main()
{
int L[8]={5,3,1,7,9,2,0,6};
sort(L,8);
return 0;
}