void bucket(int a[],int len)
{
int bucket[100][100] = {0};
int n=100, maxnum=10000;//桶的个数和最大数
for (int i = 0; i < len; i++)
{
int num_n = a[i] / (maxnum / n) > n - 1 ? n - 1: a[i] / (maxnum / n);
int bucketnum = 0;
while (bucket[num_n][bucketnum] != 0)//把数放到相应的位置
{
bucketnum++;
}
bucket[num_n][bucketnum] = a[i];
for (int i = bucketnum; i > 0; i--)//进行排序
{
if (bucket[num_n][i] < bucket[num_n][i - 1])
{
int temp = bucket[num_n][i];
bucket[num_n][i] = bucket[num_n][i - 1];
bucket[num_n][i - 1] = temp;
}
}
}
int a_num = 0;
for (int i = 0; i < 100; i++)//遍历进行赋值到原来的数组中
{
for (int j = 0; j < 100; j++)
{
if (bucket[i][j] != 0)
{
a[a_num] = bucket[i][j];
a_num++;
}
}
}
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。