【发布时间】:2016-04-23 21:09:10
【问题描述】:
对于分配,我必须创建一个在大小为 25 的数组上实现桶排序的方法,该数组填充了 0 到 25(含)之间的随机整数,我必须使用最大值作为参数方法。 Max 是数组中最大的元素(在我的代码中是 25)。然后我必须创建另一个在同一个数组上实现桶排序的方法,但现在它填充了 -25 到 25(含)之间的随机整数,但是在这个方法中我必须使用一个最大值和一个最小值,它们都被传入. 最大值是相同的,但最小值是数组中的最小值(在我的代码中是-25)。我完成了第一部分,但我无法弄清楚如何更改我的第一种方法来完成第二部分。这是我的第一种方法:
public static void sort( int[] arr, int max )
{
int min = 0;
int [] bucket=new int[max+1];
for (int i=0; i< max; i++) {
bucket[arr[i]]++;;
}
for (int i=0; i<bucket.length; i++) {
for (int j=0; j<bucket[i]; j++) {
arr[min++]=i;
}
}
}
【问题讨论】:
-
您只需要创建存储桶来保存从最小值到最大值的值。例如,如果 min 是 -25 而 max 是 25,那么您必须创建 50 个存储桶。如果 min 为 -4 而 max 为 25,那么您必须创建 29 个存储桶。因此,我会更改您的代码以生成存储桶以及一些内部逻辑来填充存储桶。
-
我想弄清楚我对负数做了什么,但我不确定如何管理它们的索引
-
我已经在答案中发布了代码。
-
如果答案对你有用,你能接受吗?
标签: java sorting bucket-sort