我正在进行一项任务,我们需要使用整数数组并使用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();
答案 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个元素放入任何一个存储桶。这可能不是问题。