我真的需要一些帮助解决这个问题。我正在尝试用Java代码编写一个函数,但是我被卡住了,我不知道如何继续。我有这个数据包含1行(区域)和7列(医院)。对于该地区,有一个百分比,这个人将最终在医院1,另一个百分比将最终在h2等。数据看起来像这样:
hospital h1 h2 h3 ...
area
a1 11 45 3 ...
我已将数据保存在包含7个值的双精度数组中。我有这个随机生成器fcn随机选择我们所在数组中的位置的索引值。如果该随机发生器选择例如index = 0表示11%,如果它随机选择index = 2表示3%等等。
问题是,在我这样做之后,我想检查这家医院是否闲置。如果它是空闲的,那么我想返回随机选择的整数索引值。如果它没有空闲,我想选择第二高百分比的下一家医院,如果该医院处于闲置状态,则返回此int指数值,否则继续并检查第三高百分比并进行另一次检查,依此类推。如果所有医院都没有闲置,则返回随机选择的值。
这是我到目前为止所做的:
double vector[] = new double[distrToEachHosp.length]();
//start by setting the contents to index
for(int index=0; index<vector.length; index++){
vector[index] = index;
}
for(int i=0; i <= vector.length; i++){
for(int x=1; x <= vector.length; x++){
if (distrToEachHosp[vektor[x]] > distrToEachHosp[vektor[x+1]]){ //compare content that corresponds to index
//move index
int temp = vector[x];
vector[x] = vector[x+1];
vector[x+1] = temp;
}
}
}
return vektor;
int rndValue = randomGenerator(distrToEachHosp);
for(int i=0; i<vector.length; i++){
if(hospital.get(i).namn == hospitalNameVariable[rndValue] ){ //hospitalNameVariable is a variable containing the names of the hospitals
if(hospital.get(i).idle()>0){
return rndValue;
} else {
if(vector[0] >= rndValue) {
return vector[0];
} else if(vektor[1] >= slumpVärde) {
......
}
}
}
这就是我被困的地方。我现在用第一种算法对数据进行了一些排序,但从逻辑上讲,我不知道如何包含所有的情况。
答案 0 :(得分:0)
您可以使用Arrays.sort(vector)
进行排序而不是实施。
对于第二个和第三个值,您始终可以通过索引来访问
分别为vector[vector.length-2]
,vector[vector.length-3]
。
答案 1 :(得分:0)
每次选择医院时都没有理由对阵列进行排序,这似乎就像你要做的那样。
如果您在程序开头对阵列进行一次排序,则非常简单。将索引设置为随机选择,如果它不是空闲然后递减索引,如果它没有空闲然后递减索引,重复直到找到空闲或用完选项。由于数组始终按排序顺序排列,因此您始终知道,无论您身在何处,下一个最佳选择都是数组中的先前值。 HTH