基数排序:“组”在基数排序中的含义是什么?

时间:2013-03-03 18:10:20

标签: sorting radix

我为我的cs类分配了算法。我需要将Radix Sort的伪代码转换为c ++。这是我的伪代码:

radixSort( int theArray[], in n:integer, in d:integer)
// sort n d-digit integers in the array theArray
    for (j=d down to 1) {
         Initialize 10 groups to empty
         Initialize a counter for each group to 0
         for (i=0 through n-1) {
              k = jth digit of theArray[i]
              Place theArray[i] at the end of group k
              Increase kth counter by 1
         }
         Replace the items in theArray with all the items in 
         group 0, followed by all the items in group 1, and so on.
    }

问题在于,我真的不明白“群体”是什么意思。我首先尝试使用数组,但当然,它会覆盖数字。如何根据最后一位数字对数字进行分组?我不是要求任何代码。我只需要了解。非常感谢你。

1 个答案:

答案 0 :(得分:0)

取每个数字,除以10得到x的幂,x为循环的每次迭代,然后将该数字修改为10。

(num/10**x) % 10

这将在第一遍中为您提供最低有效数字,然后按从右到左的顺序移动到每个数字。迭代次数应该等于最大数字的长度。