Radix按C ++排序

时间:2012-03-03 19:36:34

标签: c++ linked-list radix-sort

我尝试编写C ++代码来对整数进行基数排序。在线查看教程之后,我发现我们必须将每个整数放到正确的桶中,从最不重要的数字开始。我的问题是,在基数排序的常规算法中,我需要从0到9的10个桶吗?如果我将这些桶分配为链接列表(例如* list1 ~~~ * list9),它看起来有点奇怪吗?

感谢您的时间。这不是一个功课,而是出于好奇。

1 个答案:

答案 0 :(得分:0)

我不认为这是一个C ++问题(虽然Radix Sort可以用C ++清楚地实现),它可能与链表没有任何关系,至少不是你想象它的方式:排序发生在每个数字的基础上,您可以有效地访问每个数字的存储桶。为此,列表不会很好,但矢量会。在每个桶中,您可以使用一个列表。

关于你需要的桶数,答案是:它取决于!你可以使用任何大于1的积分基数,你需要相应数量的桶。由于计算机特别擅长使用2的幂2的计算能力可能比使用其他基数(如10)更有效,尽管10也可以工作。奇怪的是,Wikipedia's article on Radix Sort使用了基数10 - 可能是为了避免过多地混淆基数的自由选择。