Java 二维数组和桶排序
Java 2d array and Bucket sort
我正在处理一项作业,我们需要获取一个整数数组并使用桶排序对其进行排序。
我的问题出现在尝试增加到下一列时,但前提是 "bucket" 中已经有一个元素。
所以,使用我下面的数组,22 是第一个元素,将进入第 2 行第 0 列,这是正确的,但是使用 i 作为列显然是不正确的,因为它总是增加列,我最终得到索引越界。
我想不通如何正确增加 bucketArray 列的索引,前提是该位置有一个元素。我试过使用额外的 for 循环来处理该列,但这也不起作用。
任何正确方向的指示将不胜感激!我敢肯定还有其他方法可以创建桶排序,但分配说要为每个桶使用一个二维数组,所以我试图让它以这种方式工作。
public class BucketSort {
public static void main(String args[]) {
int intArray[] = {22, 45, 12, 8, 10, 6, 72, 81, 33, 18, 50, 14};
int eachBucket[][] = new int[10][11];
int j;
double max = 81;
int min = 6;
int divider = (int)Math.ceil((max + 1) / 10);
for(int i = 0; i < intArray.length; i++) {
j = (int)Math.floor(intArray[i] / divider);
eachBucket[j][i] = intArray[i];
}
}
}
使用第11个元素来跟踪当前bucket中有多少元素被使用了,类似这样
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 个元素要放入任何一个桶中。这里可能不是问题。
我正在处理一项作业,我们需要获取一个整数数组并使用桶排序对其进行排序。
我的问题出现在尝试增加到下一列时,但前提是 "bucket" 中已经有一个元素。
所以,使用我下面的数组,22 是第一个元素,将进入第 2 行第 0 列,这是正确的,但是使用 i 作为列显然是不正确的,因为它总是增加列,我最终得到索引越界。
我想不通如何正确增加 bucketArray 列的索引,前提是该位置有一个元素。我试过使用额外的 for 循环来处理该列,但这也不起作用。
任何正确方向的指示将不胜感激!我敢肯定还有其他方法可以创建桶排序,但分配说要为每个桶使用一个二维数组,所以我试图让它以这种方式工作。
public class BucketSort {
public static void main(String args[]) {
int intArray[] = {22, 45, 12, 8, 10, 6, 72, 81, 33, 18, 50, 14};
int eachBucket[][] = new int[10][11];
int j;
double max = 81;
int min = 6;
int divider = (int)Math.ceil((max + 1) / 10);
for(int i = 0; i < intArray.length; i++) {
j = (int)Math.floor(intArray[i] / divider);
eachBucket[j][i] = intArray[i];
}
}
}
使用第11个元素来跟踪当前bucket中有多少元素被使用了,类似这样
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 个元素要放入任何一个桶中。这里可能不是问题。