Java 2d数组和Bucket排序

时间:2016-03-27 00:48:46

标签: java sorting multidimensional-array bucket-sort

我正在进行一项任务,我们需要使用整数数组并使用Bucket Sort对其进行排序。

我的问题出现在尝试增加到下一列时,但只有在" bucket"中已经存在元素时才会出现问题。已经

所以,使用下面的数组,22是第一个元素,将在第2行第0列,这是正确的,但使用i作为列显然是不正确的,因为它总是增加列,我最终得到一个索引出界。

只有在该位置有一个元素时,我才能围绕如何正确增加bucketArray列的索引。我尝试过使用额外的for循环来处理该列,但这也没有用。

任何指向正确方向的人都将不胜感激!我还确定还有其他方法可以创建一个存储桶排序,但是该任务表示每个存储桶使用一个2d数组,所以我试图让它以这种方式工作。

    YourFormName newYourFormName = new YourFormName();
    newYourFormName.Parent = this;
    newYourFormName.ShowDialog();
    this.Hide(); // or to close it:
    this.Close();

1 个答案:

答案 0 :(得分:1)

使用第11个元素来跟踪当前存储桶中已使用的元素数量,如下所示

   for(int i = 0; i < intArray.length; i++) {
       j = (int)Math.floor(intArray[i] / divider);
       eachBucket[j][eachBucket[j][10]] = intArray[i];
       eachBucket[j][10]++;
    }

固定大小的第二维的问题是,如果您有更多n个元素放入任何一个存储桶。这可能不是问题。