为Bucket Sort选择正确的“桶”

时间:2015-06-08 00:15:55

标签: java insertion

我正在执行Bucket排序,我正在接受int参数,我想将其插入到最多可容纳8 ints的节点“存储桶”中。一旦int在节点中的数组中,我将执行有序搜索,以便它们按升序排列。我的问题是如何选择正确的节点“桶”来插入这些int值?我认为一般来说,对于Bucket排序,你会得到桶的数量,但我不知道该怎么办。

我正在考虑以下几点:(看看我的水桶是否已满)

if(array[max] != 0)
{
  array[size] = element;
  size++;
} 
else
{
  int[] newArray = new int[max];
  newArray[newSize] = element;
  newSize;

}

但是接下来我将要使用最多5000个插入值的if else语句。知道如何选择合适的“桶”吗?

1 个答案:

答案 0 :(得分:0)

在存储桶排序中,每个存储桶都分配了可能的键值的子范围,通常基于密钥的高位比特的值。每个输入元素都放在桶中,用于它所属的子范围。每个桶都是单独排序的,然后连接起来以获得排序结果。有关可视化,请参阅Bucket Sort

每个存储桶都需要设计为包含可以映射到它的最大可能数量的元素。如果铲斗“满”,则无法完成排序。如果你有1000个桶,每个桶最多包含8个元素,你的输入键必须限制为整数的8000元素子范围。

你应该有一个简单的算术表达式,它基于产生该键的桶号的键值。例如,如果使用1000个桶对[0,7999]中的元素进行排序,则可以将键除以8并向下舍入为整数。通常,桶的数量是2的幂,并且密钥的桶号只是来自密钥的适当数量的高阶位。

相关问题