技术无产者 2017-09-13 13:56 采纳率: 0%
浏览 689

请教一些数据结构的问题~~~

void main()
{
int inputNumber;

    int a[] = { 70,32,40,12,85,23,901,100,75,60 };
    int len = sizeof(a) / sizeof(a[0]);
    RadixSort(a, len);
    for (int i = 0; i < len; i++)
    {
        cout << a[i] << " ";
    }

}
int maxbit(int a[], int len)//最大是几位数
{
    int d = 1;
    for (int i = 0; i < len; i++)
    {
        int c = 1;
        int p = a[i];
        while (p / 10)
        {
             p = p / 10;
            c++;
        }
        if (c > d)
        {
            d = c;
        }
    }

    return d;

}
void RadixSort(int a[], int len)
{

    int temp[10];
    int count[10];
    int r = 1;
    int d = maxbit(a, len);

    for (int i = 1; i <= d; i++)
    {
        for (int i = 0; i < 10; i++)//装桶前先清桶
        {
            count[i] = 0;
        }
        for (int i = 0; i < 10; i++)
        {
            int k = a[i] / r;
            int q = k % 10;
            count[q]++;

        }
        for (int i = 1; i < 10; i++)//计算位置
        {
            count[i] += count[i - 1];
        }


        **for (int j = len-1; j>=0; j--)
        {
            int k = a[j] / r;
            int q = k % 10;
            temp[count[q] - 1] = a[j];
            count[q]--;
        }**
        for (int i = 0; i < len; i++)

        {
            a[i] = temp[i];
        }
        r = r * 10;
    }

}

问题:
for (int j = 0; j<len; j++)
{
int k = a[j] / r;
int q = k % 10;
temp[count[q] - 1] = a[j];
count[q]--;
}
为什么这段代码不能用下面这段代码代替 ,下面这段代码代替的话 排序不对
for (int j = 0; j<len; j++)
{
int k = a[j] / r;
int q = k % 10;
temp[count[q] - 1] = a[j];
count[q]--;
}

  • 写回答

2条回答

  • 我不喜欢这个世界 2017-09-14 04:12
    关注

    你两段代码都一样吧?

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿