有人能帮我解决整数的桶排序算法吗?人们经常错误地说他们有这个算法,但实际上有一个计数排序!也许它的工作方式类似,但它是不同的。
我希望你能帮我找到正确的方法,因为我现在不知道(科门的书和维基百科没有那么大的帮助)。
提前感谢你所有的回应。
发布于 2010-03-20 09:28:34
Bucket sort can be seen as a generalization of counting sort; in fact, if each bucket has size 1 then bucket sort degenerates to counting sort.
发布于 2010-03-20 14:10:03
计数排序只适用于整数,而桶排序可以处理任何具有值的内容,而且,最后一个循环也有一点不同。
计数排序保持了一个额外的ints数组,它基本上是计算某个数字中有多少个,然后当它在最后一个循环中遍历附加数组时,再次创建这个数字,我的意思是--以面向对象的方式来看待它,它不是同一个对象,而是一个值相同的新对象。
那我们就有桶式的了。桶排序遍历数组,但它不只是在数组中的相关位置执行++,而是将项插入到某种类型的列表中(我喜欢使用队列,这样就可以实现稳定排序)。然后,在最后一个循环中,该算法遍历整个附加数组,并将每个桶中的元素排到数组中。那样的话,它就是同一个物体。
如果您正在排序任何内容,并且您知道数字的范围比nlogn小,那么使用计数排序(如果它是整数)和桶排序(如果对象有一些额外的数据)。当然,可以对整数使用桶排序,但计数排序占用的空间要小得多。
https://stackoverflow.com/questions/2482488
复制相似问题