基数排序:
让我们先来谈论一下基数排序(radix sort)
举例说明:设我们有5个数字, 范围在0-999之间,我们将其排序大小。需要注意的是我们熟悉的自然排序就是通过最高有效位去比对大小(就是两个数字先比较最高位的那个位来比较大小),但这样并不能使算法正确,所以我们引入通过最低有效位然后比道最高有效位来比较大小,如下图所示
其中,0 1 2 3 4 5 6 7 8 9可以看作方便排序的一个队列。谈论到那五个数字,我们先将他们的最低有效位进行比对,11的最低有效位是1,所以放到1那一行,34最低有效位是4,所以放到4那行,57最低有效位是7,所以放到7那行,而81、21都是1所以都放到1那一行,然后通过从左到右,从上到下的排序方式进行排序,得到第一组数字就是11,21,81,34,57。然后,我们再通过对最高有效位进行比对,11放到1那一行,21放到2那一行,81放到8那一行,34放到3那一行,57放到5那一行。就得到最终的排序:11,21,34,57,81。当然如果要排序的数中有三位数或者更高位数,那就需要从最低一次一次的重复这样进行排序直到到最高有效位
代码实现:
先分解步骤:
1、创建一个函数,判断最小最大有效数位,代码如下:
int dight(int num, int dight)
{
for(int i = 1; i < dight; i++)
{
num = num/10;
}
return num % 10;
}
创建两个局部变量,执行for循环,num输入判断数位的数字,dight输入判断哪位。例如输入23,1就输出3,输入23,2就会输出2

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



