有关基数排序的疑惑

xero_123 2009-08-19 03:32:10
在基数排序的过程中,利用的是在最低位置开始进行排序,为什么不像我们常理认为的在最高位置进行排序,在算法导论里面进行了介绍,可是小弟没有怎么看明白,各位前辈谁有想法麻烦介绍一下
...全文
71 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
9CNR1 2009-08-22
又看到“卡片排序器一次只能查看一个列”这句话,∴理解如下:
如果开始从最高位置进行排序,接着对次高位置进行排序,则
一次只能查看一个列
∴单看次高位置不能决定数的排序位置,还要查看器最高位置的排序信息
反之,从最低位置开始排序,接着对次低位置进行排序,则不用去关心最低位置信息,
∵相比之下,次低位置的权值要高
回复
9CNR1 2009-08-22
我也看得不是很明白。
《算法导论》里有这么一段话:“从直觉上来看,人们可能会觉得应该按照最高有效位进行排序,然后再对每个盒子中的数递归地排序,最后再把结果合并起来。不幸的是,为排序每一个盒子中的数,10个盒子中的9个必须先放在一边,这个过程中产生了许多要加以记录的中间卡片堆(见练习8.3-5)。”
哪位大侠解释下这其中的玄机?为什么首先按最低有效位数字进行排序不会产生中间卡片堆?
回复
xero_123 2009-08-22
[Quote=引用 4 楼 starcat 的回复:]
我看《数据结构与算法分析-C语言描述》里阐述这个问题,好像很好理解阿。
[/Quote]

麻烦详细介绍一下
回复
starcat 2009-08-21
我看《数据结构与算法分析-C语言描述》里阐述这个问题,好像很好理解阿。
回复
destinyac 2009-08-21
基数排序的从低位到高位排序的可以这么考虑:
最后一次排序的时候,所依据的肯定是权值高的。就像比较两个数一样,如果高位大的话,低位就不用看。


如果从高位到低位排序,可以用递归实现。思想就是分组了。
回复
acdbxzyw 2009-08-19
两种方向都可以。
只记得在这里从高位开始排很麻烦。消耗太大。
回复
hyram 2009-08-19
从后往前排,每次准备10张表,排好以后可以合为一张(因为前一位数大的数必然大),整个排序过程我们只需要10张表。
如果从前往后,每次准备10张表,排好以后必须再把每个表分成10张表(无法合并),这样空间消耗太大,无法承受。
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告