2 qq 39552268 qq_39552268 于 2017.09.13 21:56 提问

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

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个回答

m0_38124502
m0_38124502   2017.09.14 12:12

你两段代码都一样吧?

qq_39552268
qq_39552268 。。。不好意思 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]--; }**
10 个月之前 回复
qq_39552268
qq_39552268   2017.09.17 22:43

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 j = 0; j<len; j++)
{
int k = a[j] / r;
int q = k % 10;
temp[count[q] - 1] = a[j];
count[q]--;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
问题请教工程,问题请教工程
问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,
英文邮件礼仪:向教授请教学术问题
英文邮件礼仪:向教授请教学术问题   邮件主题 邮件主题(subject)不需要写自己的名字。名字是在邮件系统设置里设定好的,在发件时会替换显示实际地址,所以无需在主题里再写一遍。 [关键内容是要在主题里就写明白是否有推荐人,以及主要是什么事。很多教授只看主题。]   一个好的标题,要能简洁地概括邮件的目的或内容。如果你对教授的某个研究项目感兴趣,就可以用这个研究方向作标题,例如"De
如何请教别人问题?
提问的智慧。
问题请教高手
问题请教高手问题请教高手
程序员应该如何去请教别人问题
程序员应该如何提问
翻转数的和
Description 喜欢数学的Lucy经常向哥哥LF请教一些题目,哥哥总能很快就帮她解决。这不,Lucy又有难题要请教哥哥了Lucy的难题。 Lucy的难题是有关翻转数的: 翻转数就是把一个数的所有数字以相反顺序写出来,即原来的第一个数字成为最后一个,而原来的最后一个则成为第一个。我们把未翻转的数称为翻转数的原数。 例 如:6789的翻转数是9876,而6789就是9876的原数。 你一定
请教C语言问题
请教C语言问题
数据结构若干经典问题和算法 (收藏)
一、迭代法       迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:  (1)   选一个方程的近似根,赋给变量x0;  (2)   将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;  (3)   当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。  若方程有根
《数据结构编程实验》 2.4.4Calendar个人见解,求指导
《数据结构编程实验》 2.4.4Calendar 个人见解,求指教
邮件发送问题
邮件发送问题,请教。