设S1,S2,..,Sk是整数集合,每个集合Si(1<=i<=k)中整数取值范围是1到n,且(求和
符号)|Si|=n,试设计一个算法在O(n)时间内将S1,S2,..,Sn分别排序.
答案说用桶排序或者基数排序,有大神能快点解决么
设S1,S2,..,Sk是整数集合,每个集合Si(1<=i<=k)中整数取值范围是1到n,且(求和
符号)|Si|=n,试设计一个算法在O(n)时间内将S1,S2,..,Sn分别排序.
答案说用桶排序或者基数排序,有大神能快点解决么
收起
就用基数排序好了
int sort(int * data, int n)
{
int temp[k + 1];
for (int i = 1; i <=k; i++)
temp[i] = 0;
for (int i = 0; i < n; i++)
temp[data[i]]++;
int ix = 0;
for (int i = 1; i <= k; i++)
for(int j = 0; j < temp[i]; j++)
temp[++ix] = i;
}
报告相同问题?